{"version":3,"sources":["../node_modules/react/jsx-runtime.js","../node_modules/react/index.js","../node_modules/@redux-saga/core/dist/redux-saga-effects.esm.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/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/utils/bindActionCreators.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.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","../../../src/utils/Constants.ts","../../../src/utils/BrowserConstants.ts","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../node_modules/prop-types/index.js","../node_modules/date-fns/esm/toDate/index.js","../node_modules/@redux-saga/core/dist/io-22ea0cf9.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../../../src/error/ClientAuthError.ts","../../../src/utils/StringUtils.ts","../node_modules/date-fns/esm/_lib/toInteger/index.js","../../../src/event/EventType.ts","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../modules/BrowserRouter.js","../../modules/HashRouter.js","../../modules/utils/locationUtils.js","../../modules/Link.js","../../modules/NavLink.js","../node_modules/@redux-saga/is/dist/redux-saga-is.esm.js","../../../src/error/AuthError.ts","../node_modules/classnames/index.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/moment/moment.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@redux-saga/symbols/dist/redux-saga-symbols.esm.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../node_modules/react-bootstrap/esm/Image.js","../../../src/error/BrowserConfigurationAuthError.ts","../../modules/miniCreateReactContext.js","../../modules/createContext.js","../../modules/createNamedContext.js","../../modules/HistoryContext.js","../../modules/RouterContext.js","../../modules/Router.js","../../modules/MemoryRouter.js","../../modules/Lifecycle.js","../../modules/Prompt.js","../../modules/generatePath.js","../../modules/Redirect.js","../../modules/matchPath.js","../../modules/Route.js","../../modules/StaticRouter.js","../../modules/Switch.js","../../modules/withRouter.js","../../modules/hooks.js","../node_modules/react-bootstrap/esm/createChainedFunction.js","../node_modules/react-bootstrap/esm/SafeAnchor.js","../node_modules/react-bootstrap/esm/Button.js","../../src/index.js","../node_modules/date-fns/esm/_lib/defaultOptions/index.js","../node_modules/react-bootstrap/esm/divWithClassName.js","../node_modules/react-bootstrap/esm/CardContext.js","../node_modules/react-bootstrap/esm/CardImg.js","../node_modules/react-bootstrap/esm/Card.js","../../../src/account/ClientInfo.ts","../../../src/authority/AuthorityType.ts","../node_modules/dom-helpers/esm/camelize.js","../node_modules/react-bootstrap/esm/createWithBsPrefix.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/react-lottie/dist/index.js","../node_modules/react-bootstrap/esm/Feedback.js","../node_modules/react-bootstrap/esm/FormContext.js","../node_modules/react-bootstrap/esm/FormCheckInput.js","../node_modules/react-bootstrap/esm/FormCheckLabel.js","../node_modules/react-bootstrap/esm/FormCheck.js","../node_modules/react-bootstrap/esm/FormFileInput.js","../node_modules/react-bootstrap/esm/FormFileLabel.js","../node_modules/react-bootstrap/esm/FormFile.js","../node_modules/react-bootstrap/esm/FormControl.js","../node_modules/react-bootstrap/esm/FormGroup.js","../node_modules/react-bootstrap/esm/FormLabel.js","../node_modules/react-bootstrap/esm/FormText.js","../node_modules/react-bootstrap/esm/Switch.js","../node_modules/react-bootstrap/esm/Form.js","../node_modules/pdfjs-dist/legacy/build/pdf.js","../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/redux-actions/es/utils/isPlainObject.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/redux-actions/es/constants.js","../node_modules/react-i18next/dist/es/unescape.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/webpack/buildin/global.js","../node_modules/core-js/library/modules/_core.js","../node_modules/react-dom/index.js","../node_modules/invariant/browser.js","../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/redux-actions/es/utils/isFunction.js","../node_modules/redux-actions/es/utils/identity.js","../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../../../src/app/IPublicClientApplication.ts","../../../src/event/EventMessage.ts","../../src/MsalContext.ts","../../src/utils/utilities.ts","../../src/packageMetadata.ts","../../src/MsalProvider.tsx","../../src/hooks/useMsal.ts","../../src/hooks/useIsAuthenticated.ts","../../src/hooks/useAccount.ts","../../src/error/ReactAuthError.ts","../../src/hooks/useMsalAuthentication.ts","../../../src/error/InteractionRequiredAuthError.ts","../node_modules/mixpanel-browser/dist/mixpanel.cjs.js","../node_modules/date-fns/esm/constants/index.js","../node_modules/core-js/library/modules/_global.js","../node_modules/core-js/library/modules/_descriptors.js","../node_modules/redux-actions/es/utils/isMap.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/core-js/library/modules/_export.js","../node_modules/core-js/library/modules/_object-dp.js","../node_modules/core-js/library/modules/_has.js","../node_modules/platform/platform.js","../node_modules/date-fns/esm/startOfDay/index.js","../node_modules/react-router-navigation-prompt/es/index.js","../../../../src/cache/entities/AccountEntity.ts","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/core-js/library/modules/_hide.js","../node_modules/core-js/library/modules/_is-object.js","../node_modules/core-js/library/modules/_fails.js","../node_modules/core-js/library/modules/_to-iobject.js","../node_modules/core-js/library/modules/_wks.js","../node_modules/es-errors/type.js","../node_modules/redux-actions/es/utils/ownKeys.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../node_modules/date-fns/esm/startOfWeek/index.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/inheritsLoose.js","../node_modules/core-js/library/modules/_an-object.js","../node_modules/get-intrinsic/index.js","../node_modules/define-properties/index.js","../node_modules/warning/warning.js","../node_modules/date-fns/esm/addDays/index.js","../node_modules/date-fns/esm/addMonths/index.js","../../../src/logger/Logger.ts","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/react-bootstrap/esm/Row.js","../node_modules/react-bootstrap/esm/Col.js","../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/redux/es/redux.js","../node_modules/core-js/library/modules/_property-desc.js","../node_modules/core-js/library/modules/_object-keys.js","../node_modules/core-js/library/modules/_library.js","../node_modules/core-js/library/modules/_uid.js","../node_modules/core-js/library/modules/_object-pie.js","../node_modules/core-js/library/modules/_to-object.js","../node_modules/@redux-saga/delay-p/dist/redux-saga-delay-p.esm.js","../node_modules/jwt-decode/build/esm/index.js","../node_modules/redux-actions/es/utils/flattenWhenNode.js","../node_modules/redux-actions/es/utils/get.js","../node_modules/redux-actions/es/utils/isNil.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/date-fns/esm/subMilliseconds/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/esm/startOfQuarter/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/_lib/defaultLocale/index.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../node_modules/react-bootstrap/esm/InputGroup.js","../node_modules/webpack/buildin/module.js","../node_modules/core-js/library/modules/_to-primitive.js","../node_modules/core-js/library/modules/_defined.js","../node_modules/core-js/library/modules/_to-integer.js","../node_modules/core-js/library/modules/_shared-key.js","../node_modules/core-js/library/modules/_shared.js","../node_modules/core-js/library/modules/_enum-bug-keys.js","../node_modules/core-js/library/modules/_object-gops.js","../node_modules/core-js/library/modules/_iterators.js","../node_modules/core-js/library/modules/_object-create.js","../node_modules/core-js/library/modules/_set-to-string-tag.js","../node_modules/core-js/library/modules/_wks-ext.js","../node_modules/core-js/library/modules/_wks-define.js","../node_modules/has-tostringtag/shams.js","../node_modules/function-bind/index.js","../node_modules/call-bind/index.js","../node_modules/define-data-property/index.js","../node_modules/es-define-property/index.js","../node_modules/has-property-descriptors/index.js","../node_modules/prop-types-extra/lib/all.js","../node_modules/date-fns/esm/isDate/index.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/addMinutes/index.js","../node_modules/date-fns/esm/addHours/index.js","../node_modules/date-fns/esm/addWeeks/index.js","../node_modules/date-fns/esm/addYears/index.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/date-fns/esm/setMonth/index.js","../node_modules/date-fns/esm/getDaysInMonth/index.js","../node_modules/lodash/lodash.js","../node_modules/to-camel-case/index.js","../node_modules/path-to-regexp/index.js","../../../src/utils/isBrowser.js","../../../src/utils/debounce.js","../../../src/utils/isFunction.js","../../../src/utils/getStyleComputedProperty.js","../../../src/utils/getParentNode.js","../../../src/utils/getScrollParent.js","../../../src/utils/getReferenceNode.js","../../../src/utils/isIE.js","../../../src/utils/getOffsetParent.js","../../../src/utils/getRoot.js","../../../src/utils/findCommonOffsetParent.js","../../../src/utils/isOffsetContainer.js","../../../src/utils/getScroll.js","../../../src/utils/getBordersSize.js","../../../src/utils/getWindowSizes.js","../../../src/utils/getClientRect.js","../../../src/utils/getBoundingClientRect.js","../../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../../src/utils/includeScroll.js","../../../src/utils/isFixed.js","../../../src/utils/getFixedPositionOffsetParent.js","../../../src/utils/getBoundaries.js","../../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../../src/utils/computeAutoPlacement.js","../../../src/utils/getReferenceOffsets.js","../../../src/utils/getOuterSizes.js","../../../src/utils/getOppositePlacement.js","../../../src/utils/getPopperOffsets.js","../../../src/utils/find.js","../../../src/utils/runModifiers.js","../../../src/utils/findIndex.js","../../../src/methods/update.js","../../../src/utils/isModifierEnabled.js","../../../src/utils/getSupportedPropertyName.js","../../../src/methods/destroy.js","../../../src/utils/getWindow.js","../../../src/utils/setupEventListeners.js","../../../src/methods/enableEventListeners.js","../../../src/methods/disableEventListeners.js","../../../src/utils/removeEventListeners.js","../../../src/utils/isNumeric.js","../../../src/utils/setStyles.js","../../../src/modifiers/computeStyle.js","../../../src/utils/isModifierRequired.js","../../../src/methods/placements.js","../../../src/utils/clockwise.js","../../../src/modifiers/flip.js","../../../src/modifiers/offset.js","../../../src/modifiers/index.js","../../../src/modifiers/shift.js","../../../src/modifiers/preventOverflow.js","../../../src/modifiers/keepTogether.js","../../../src/modifiers/arrow.js","../../../src/utils/getOppositeVariation.js","../../../src/modifiers/inner.js","../../../src/modifiers/hide.js","../../../src/utils/getRoundedOffsets.js","../../../src/modifiers/applyStyle.js","../../../src/utils/setAttributes.js","../../../src/methods/defaults.js","../../../src/index.js","../node_modules/@hypnosphi/create-react-context/lib/index.js","../node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../node_modules/pdfjs-dist/legacy/build/pdf.worker.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/make-event-props/dist/esm/index.js","../node_modules/make-cancellable-promise/dist/esm/index.js","../node_modules/merge-class-names/dist/esm/index.js","../node_modules/react-pdf/dist/esm/DocumentContext.js","../node_modules/react-pdf/dist/esm/Message.js","../node_modules/react-pdf/dist/esm/LinkService.js","../node_modules/react-pdf/dist/esm/PasswordResponses.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/react-pdf/dist/esm/shared/utils.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/react-pdf/dist/esm/shared/propTypes.js","../node_modules/react-pdf/dist/esm/Document.js","../node_modules/react-pdf/dist/esm/OutlineContext.js","../node_modules/react-pdf/dist/esm/Ref.js","../node_modules/react-pdf/dist/esm/OutlineItem.js","../node_modules/react-pdf/dist/esm/Outline.js","../node_modules/merge-refs/dist/esm/index.js","../node_modules/react-pdf/dist/esm/PageContext.js","../node_modules/react-pdf/dist/esm/Page/PageCanvas.js","../node_modules/react-pdf/dist/esm/Page/PageSVG.js","../node_modules/react-pdf/dist/esm/Page/TextLayerItem.js","../node_modules/react-pdf/dist/esm/Page/TextLayer.js","../node_modules/react-pdf/dist/esm/Page/AnnotationLayer.js","../node_modules/react-pdf/dist/esm/Page.js","../node_modules/react-pdf/dist/esm/entry.webpack.js","../node_modules/@babel/runtime/helpers/esm/objectSpread.js","../node_modules/i18next/dist/esm/i18next.js","../node_modules/process/browser.js","../node_modules/react-is/index.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/core-js/library/modules/_ctx.js","../node_modules/core-js/library/modules/_ie8-dom-define.js","../node_modules/core-js/library/modules/_dom-create.js","../node_modules/core-js/library/modules/_object-keys-internal.js","../node_modules/core-js/library/modules/_iobject.js","../node_modules/core-js/library/modules/_cof.js","../node_modules/core-js/library/modules/_object-gpo.js","../node_modules/babel-runtime/helpers/typeof.js","../node_modules/core-js/library/modules/_iter-define.js","../node_modules/core-js/library/modules/_redefine.js","../node_modules/core-js/library/modules/_object-gopn.js","../node_modules/core-js/library/modules/_object-gopd.js","../node_modules/object-keys/index.js","../node_modules/object-keys/isArguments.js","../node_modules/has-symbols/shams.js","../node_modules/call-bind/callBound.js","../node_modules/es-errors/syntax.js","../node_modules/gopd/index.js","../node_modules/object-is/implementation.js","../node_modules/object-is/polyfill.js","../node_modules/regexp.prototype.flags/implementation.js","../node_modules/regexp.prototype.flags/polyfill.js","../node_modules/react-dom/client.js","../node_modules/react-redux/node_modules/react-is/index.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/focus-trap-react/dist/focus-trap-react.js","../../index.js","../node_modules/use-constant/dist/use-constant.esm.js","../node_modules/react-text-mask/dist/reactTextMask.js","../node_modules/text-mask-addons/dist/createAutoCorrectedDatePipe.js","../node_modules/react-datepicker/dist/react-datepicker.min.js","../node_modules/deep-equal/index.js","../node_modules/void-elements/index.js","../node_modules/normalize-wheel/index.js","../node_modules/@redux-saga/deferred/dist/redux-saga-deferred.esm.js","../node_modules/@redux-saga/core/dist/redux-saga-core.esm.js","../node_modules/redux-saga/dist/redux-saga-core-npm-proxy.esm.js","../../src/index.ts","../../node_modules/tslib/tslib.es6.js","../node_modules/react-easy-crop/node_modules/tslib/tslib.es6.js","../../src/helpers.ts","../../src/index.tsx","../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/timers-browserify/main.js","../node_modules/setimmediate/setImmediate.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/to-space-case/index.js","../node_modules/to-no-case/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/babel-runtime/helpers/extends.js","../node_modules/babel-runtime/core-js/object/assign.js","../node_modules/core-js/library/fn/object/assign.js","../node_modules/core-js/library/modules/es6.object.assign.js","../node_modules/core-js/library/modules/_a-function.js","../node_modules/core-js/library/modules/_object-assign.js","../node_modules/core-js/library/modules/_array-includes.js","../node_modules/core-js/library/modules/_to-length.js","../node_modules/core-js/library/modules/_to-absolute-index.js","../node_modules/babel-runtime/core-js/object/get-prototype-of.js","../node_modules/core-js/library/fn/object/get-prototype-of.js","../node_modules/core-js/library/modules/es6.object.get-prototype-of.js","../node_modules/core-js/library/modules/_object-sap.js","../node_modules/babel-runtime/helpers/classCallCheck.js","../node_modules/babel-runtime/helpers/createClass.js","../node_modules/babel-runtime/core-js/object/define-property.js","../node_modules/core-js/library/fn/object/define-property.js","../node_modules/core-js/library/modules/es6.object.define-property.js","../node_modules/babel-runtime/helpers/possibleConstructorReturn.js","../node_modules/babel-runtime/core-js/symbol/iterator.js","../node_modules/core-js/library/fn/symbol/iterator.js","../node_modules/core-js/library/modules/es6.string.iterator.js","../node_modules/core-js/library/modules/_string-at.js","../node_modules/core-js/library/modules/_iter-create.js","../node_modules/core-js/library/modules/_object-dps.js","../node_modules/core-js/library/modules/_html.js","../node_modules/core-js/library/modules/web.dom.iterable.js","../node_modules/core-js/library/modules/es6.array.iterator.js","../node_modules/core-js/library/modules/_add-to-unscopables.js","../node_modules/core-js/library/modules/_iter-step.js","../node_modules/babel-runtime/core-js/symbol.js","../node_modules/core-js/library/fn/symbol/index.js","../node_modules/core-js/library/modules/es6.symbol.js","../node_modules/core-js/library/modules/_meta.js","../node_modules/core-js/library/modules/_enum-keys.js","../node_modules/core-js/library/modules/_is-array.js","../node_modules/core-js/library/modules/_object-gopn-ext.js","../node_modules/core-js/library/modules/es7.symbol.async-iterator.js","../node_modules/core-js/library/modules/es7.symbol.observable.js","../node_modules/babel-runtime/helpers/inherits.js","../node_modules/babel-runtime/core-js/object/set-prototype-of.js","../node_modules/core-js/library/fn/object/set-prototype-of.js","../node_modules/core-js/library/modules/es6.object.set-prototype-of.js","../node_modules/core-js/library/modules/_set-proto.js","../node_modules/babel-runtime/core-js/object/create.js","../node_modules/core-js/library/fn/object/create.js","../node_modules/core-js/library/modules/es6.object.create.js","../node_modules/lottie-web/build/player/lottie.js","../node_modules/webpack/buildin/amd-options.js","../node_modules/date-fns/esm/subMinutes/index.js","../node_modules/date-fns/esm/subHours/index.js","../node_modules/date-fns/esm/subDays/index.js","../node_modules/date-fns/esm/subWeeks/index.js","../node_modules/date-fns/esm/subMonths/index.js","../node_modules/date-fns/esm/subYears/index.js","../node_modules/date-fns/esm/getSeconds/index.js","../node_modules/date-fns/esm/getMinutes/index.js","../node_modules/date-fns/esm/getHours/index.js","../node_modules/date-fns/esm/getDay/index.js","../node_modules/date-fns/esm/getDate/index.js","../node_modules/date-fns/esm/getMonth/index.js","../node_modules/date-fns/esm/getQuarter/index.js","../node_modules/date-fns/esm/getYear/index.js","../node_modules/date-fns/esm/getTime/index.js","../node_modules/date-fns/esm/setSeconds/index.js","../node_modules/date-fns/esm/setMinutes/index.js","../node_modules/date-fns/esm/setHours/index.js","../node_modules/date-fns/esm/setQuarter/index.js","../node_modules/date-fns/esm/setYear/index.js","../node_modules/date-fns/esm/min/index.js","../node_modules/date-fns/esm/max/index.js","../node_modules/date-fns/esm/differenceInCalendarDays/index.js","../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","../node_modules/date-fns/esm/differenceInCalendarWeeks/index.js","../node_modules/date-fns/esm/differenceInCalendarYears/index.js","../node_modules/date-fns/esm/startOfMonth/index.js","../node_modules/date-fns/esm/startOfYear/index.js","../node_modules/date-fns/esm/endOfDay/index.js","../node_modules/date-fns/esm/endOfWeek/index.js","../node_modules/date-fns/esm/endOfMonth/index.js","../node_modules/date-fns/esm/isEqual/index.js","../node_modules/date-fns/esm/isSameDay/index.js","../node_modules/date-fns/esm/isSameMonth/index.js","../node_modules/date-fns/esm/isSameYear/index.js","../node_modules/date-fns/esm/isSameQuarter/index.js","../node_modules/date-fns/esm/isAfter/index.js","../node_modules/date-fns/esm/isBefore/index.js","../node_modules/date-fns/esm/isWithinInterval/index.js","../node_modules/date-fns/esm/parseISO/index.js","../node_modules/react-onclickoutside/dist/react-onclickoutside.es.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/object-keys/implementation.js","../node_modules/is-arguments/index.js","../node_modules/es-errors/index.js","../node_modules/es-errors/eval.js","../node_modules/es-errors/range.js","../node_modules/es-errors/ref.js","../node_modules/es-errors/uri.js","../node_modules/has-symbols/index.js","../node_modules/has-proto/index.js","../node_modules/function-bind/implementation.js","../node_modules/hasown/index.js","../node_modules/set-function-length/index.js","../node_modules/object-is/index.js","../node_modules/object-is/shim.js","../node_modules/is-regex/index.js","../node_modules/regexp.prototype.flags/index.js","../node_modules/set-function-name/index.js","../node_modules/functions-have-names/index.js","../node_modules/regexp.prototype.flags/shim.js","../node_modules/is-date-object/index.js","../node_modules/@hypnosphi/create-react-context/lib/implementation.js","../node_modules/gud/index.js","../node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","../node_modules/buffer/index.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/node_modules/isarray/index.js","../node_modules/normalize-wheel/src/normalizeWheel.js","../node_modules/normalize-wheel/src/UserAgent_DEPRECATED.js","../node_modules/normalize-wheel/src/isEventSupported.js","../node_modules/normalize-wheel/src/ExecutionEnvironment.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/date-fns/esm/_lib/assign/index.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/date-fns/esm/parse/_lib/Setter.js","../node_modules/date-fns/esm/parse/_lib/Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","../node_modules/date-fns/esm/parse/_lib/constants.js","../node_modules/date-fns/esm/parse/_lib/utils.js","../node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../node_modules/date-fns/esm/parse/index.js","../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../node_modules/date-fns/esm/_lib/format/formatters/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/format/index.js","../node_modules/react-popper/lib/esm/Manager.js","../node_modules/react-popper/lib/esm/utils.js","../node_modules/react-popper/lib/esm/Popper.js","../node_modules/react-popper/lib/esm/Reference.js","../node_modules/date-fns/esm/startOfISOWeek/index.js","../node_modules/date-fns/esm/startOfISOWeekYear/index.js","../node_modules/date-fns/esm/getISOWeekYear/index.js","../node_modules/date-fns/esm/getISOWeek/index.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/react-bootstrap/esm/Container.js","../node_modules/react-i18next/dist/es/I18nextProvider.js","../../../../src/telemetry/performance/PerformanceEvent.ts","../../../src/cache/CryptoKeyStore.ts","../../../src/error/ServerError.ts","../../../src/error/JoseHeaderError.ts","../../../src/crypto/JoseHeader.ts","../../../src/utils/MathUtils.ts","../../../src/crypto/GuidGenerator.ts","../../../src/utils/BrowserStringUtils.ts","../../../src/encode/Base64Encode.ts","../../../src/encode/Base64Decode.ts","../../../src/error/BrowserAuthError.ts","../../../src/crypto/PkceGenerator.ts","../../../src/crypto/ModernBrowserCrypto.ts","../../../src/crypto/MsrBrowserCrypto.ts","../../../src/crypto/MsBrowserCrypto.ts","../../../src/crypto/BrowserCrypto.ts","../../../src/cache/DatabaseStorage.ts","../../../src/cache/MemoryStorage.ts","../../../src/cache/AsyncMemoryStorage.ts","../../../src/account/CcsCredential.ts","../../../src/crypto/CryptoOps.ts","../../../../src/telemetry/performance/PerformanceClient.ts","../../../../src/telemetry/performance/StubPerformanceClient.ts","../../../src/crypto/ICrypto.ts","../../../../src/cache/entities/CredentialEntity.ts","../../../../src/cache/entities/IdTokenEntity.ts","../../../src/error/ClientConfigurationError.ts","../../../src/request/ScopeSet.ts","../../../src/account/AuthToken.ts","../../../src/cache/CacheManager.ts","../../../src/utils/TimeUtils.ts","../../../../src/cache/entities/AccessTokenEntity.ts","../../../../src/cache/entities/RefreshTokenEntity.ts","../../../../src/cache/entities/AppMetadataEntity.ts","../../../../src/cache/entities/ServerTelemetryEntity.ts","../../../../src/cache/entities/AuthorityMetadataEntity.ts","../../../../src/cache/entities/ThrottlingEntity.ts","../../../src/utils/ProtocolUtils.ts","../../../src/authority/ProtocolMode.ts","../../../src/authority/AuthorityOptions.ts","../../../src/cache/BrowserStorage.ts","../../../src/url/UrlString.ts","../../../src/utils/BrowserProtocolUtils.ts","../../../src/cache/BrowserCacheManager.ts","../../../src/config/ClientConfiguration.ts","../../../src/network/INetworkModule.ts","../../../src/network/FetchClient.ts","../../../src/network/XhrClient.ts","../../../src/utils/BrowserUtils.ts","../../../src/navigation/NavigationClient.ts","../../../src/config/Configuration.ts","../../../src/crypto/PopTokenGenerator.ts","../../../src/event/EventHandler.ts","../../../src/network/ThrottlingUtils.ts","../../../src/network/NetworkManager.ts","../../../src/request/RequestValidator.ts","../../../src/request/RequestParameterBuilder.ts","../../../src/client/BaseClient.ts","../../../../src/cache/entities/CacheRecord.ts","../../../../src/cache/persistence/TokenCacheContext.ts","../../../src/response/ResponseHandler.ts","../../../src/client/AuthorizationCodeClient.ts","../../../src/authority/OpenIdConfigResponse.ts","../../../src/authority/AuthorityMetadata.ts","../../../src/authority/RegionDiscovery.ts","../../../src/error/NativeAuthError.ts","../../../src/authority/Authority.ts","../../../src/authority/CloudInstanceDiscoveryResponse.ts","../../../src/authority/CloudInstanceDiscoveryErrorResponse.ts","../../../src/authority/AuthorityFactory.ts","../../../../src/telemetry/server/ServerTelemetryManager.ts","../../../src/interaction_client/BaseInteractionClient.ts","../../../src/interaction_client/StandardInteractionClient.ts","../../../src/client/RefreshTokenClient.ts","../../../src/client/SilentFlowClient.ts","../../../src/interaction_client/SilentCacheClient.ts","../../../src/interaction_client/NativeInteractionClient.ts","../../../../src/broker/nativeBroker/NativeMessageHandler.ts","../../../src/interaction_handler/InteractionHandler.ts","../../../src/interaction_client/PopupClient.ts","../../../src/interaction_handler/RedirectHandler.ts","../../../src/interaction_client/RedirectClient.ts","../../../src/interaction_handler/SilentHandler.ts","../../../src/interaction_client/SilentIframeClient.ts","../../../src/interaction_client/SilentRefreshClient.ts","../../../src/cache/TokenCache.ts","../../../src/interaction_client/HybridSpaAuthorizationCodeClient.ts","../../../src/interaction_client/SilentAuthCodeClient.ts","../../../src/telemetry/BrowserPerformanceMeasurement.ts","../../../src/telemetry/BrowserPerformanceClient.ts","../../../src/app/PublicClientApplication.ts","../../../src/app/ClientApplication.ts","../node_modules/redux-actions/es/utils/isArray.js","../node_modules/redux-actions/es/utils/isString.js","../node_modules/redux-actions/es/utils/getLastElement.js","../node_modules/redux-actions/es/utils/camelCase.js","../node_modules/redux-actions/es/utils/arrayToObject.js","../node_modules/redux-actions/es/utils/flattenActionMap.js","../node_modules/redux-actions/es/utils/isEmpty.js","../node_modules/redux-actions/es/utils/unflattenActionCreators.js","../node_modules/redux-actions/es/utils/isNull.js","../node_modules/redux-actions/es/createAction.js","../node_modules/redux-actions/es/createActions.js","../node_modules/reduce-reducers/es/index.js","../node_modules/redux-actions/es/utils/flattenReducerMap.js","../node_modules/redux-actions/es/utils/hasGeneratorInterface.js","../node_modules/redux-actions/es/utils/isUndefined.js","../node_modules/redux-actions/es/utils/toString.js","../node_modules/redux-actions/es/handleActions.js","../node_modules/redux-actions/es/handleAction.js","../../src/parse-tag.js","../../src/parse.js","../../src/stringify.js","../node_modules/react-i18next/dist/es/Trans.js"],"names":["module","exports","require","done","value","qEnd","safeName","patternOrChannel","channel","stringableFunc","String","func","name","fsmIterator","fsm","startState","stateUpdater","errorState","effect","nextState","next","arg","error","currentState","makeIterator","takeEvery","worker","_len","arguments","length","args","Array","_key","action","yTake","take","setAction","ac","q1","q2","fork","apply","concat","takeLatest","task","yFork","yCancel","cancel","setTask","t","q3","takeEvery$1","takeLatest$1","_len2","_key2","ReactReduxContext","React","createContext","batch","callback","getBatch","nullListeners","notify","get","createSubscription","store","parentSub","unsubscribe","listeners","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","subscribe","first","last","clear","listener","push","isSubscribed","prev","createListenerCollection","notifyNestedSubs","Boolean","tryUnsubscribe","undefined","getListeners","useIsomorphicLayoutEffect","window","document","createElement","useLayoutEffect","useEffect","Provider","_ref","context","children","contextValue","useMemo","previousState","getState","Context","_excluded","_excluded2","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","state","updateCount","payload","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","dependencies","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","current","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","e","type","initStateUpdates","connectAdvanced","selectorFactory","_ref2","_ref2$getDisplayName","getDisplayName","_ref2$methodName","methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","_ref2$storeKey","storeKey","_ref2$forwardRef","withRef","forwardRef","_ref2$context","connectOptions","_objectWithoutPropertiesLoose","WrappedComponent","wrappedComponentName","displayName","selectorFactoryOptions","_extends","pure","usePureOnlyMemo","ConnectFunction","props","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","Consumer","isContextConsumer","useContext","didStoreComeFromProps","dispatch","createChildSelector","_useMemo2","bind","overriddenContextValue","_useReducer","useReducer","previousStateUpdateResult","useRef","renderedWrappedComponent","ref","Connect","memo","forwarded","hoistStatics","is","x","y","shallowEqual","objA","objB","keysA","Object","keys","keysB","i","prototype","hasOwnProperty","call","wrapMapToPropsConstant","getConstant","options","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","actionCreators","boundActionCreators","_loop","key","actionCreator","bindActionCreators","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextOwnProps","propsChanged","stateChanged","nextStateProps","statePropsChanged","handleNewState","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","match","factories","result","Error","strictEqual","a","b","createConnect","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","defaultMapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","defaultMapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","defaultMergePropsFactories","_ref$selectorFactory","defaultSelectorFactory","_ref3","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","useReduxContext","createStoreHook","useDefaultReduxContext","useStore","createDispatchHook","useDefaultStore","useDispatch","refEquality","createSelectorHook","selector","equalityFn","_useReduxContext","selectedState","contextSub","forceRender","s","latestSubscriptionCallbackError","latestSelector","latestSelectedState","storeState","newSelectedState","err","message","stack","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","useDebugValue","newBatch","useSelector","HeaderNames","PersistentCacheKeys","AADAuthorityConstants","AADServerParamKeys","ClaimsRequestKeys","Constants","LIBRARY_NAME","SKU","CACHE_PREFIX","DEFAULT_AUTHORITY","DEFAULT_AUTHORITY_HOST","DEFAULT_COMMON_TENANT","ADFS","DSTS","AAD_INSTANCE_DISCOVERY_ENDPT","CIAM_AUTH_URL","AAD_TENANT_DOMAIN_SUFFIX","RESOURCE_DELIM","NO_ACCOUNT","CLAIMS","CONSUMER_UTID","OPENID_SCOPE","PROFILE_SCOPE","OFFLINE_ACCESS_SCOPE","EMAIL_SCOPE","CODE_RESPONSE_TYPE","CODE_GRANT_TYPE","RT_GRANT_TYPE","FRAGMENT_RESPONSE_MODE","S256_CODE_CHALLENGE_METHOD","URL_FORM_CONTENT_TYPE","AUTHORIZATION_PENDING","NOT_DEFINED","EMPTY_STRING","NOT_APPLICABLE","FORWARD_SLASH","IMDS_ENDPOINT","IMDS_VERSION","IMDS_TIMEOUT","AZURE_REGION_AUTO_DISCOVER_FLAG","REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX","REGIONAL_AUTH_NON_MSI_QUERY_STRING","KNOWN_PUBLIC_CLOUDS","TOKEN_RESPONSE_TYPE","ID_TOKEN_RESPONSE_TYPE","SHR_NONCE_VALIDITY","INVALID_INSTANCE","OIDC_DEFAULT_SCOPES","OIDC_SCOPES","SSOTypes","PromptValue","LOGIN","SELECT_ACCOUNT","CONSENT","NONE","CREATE","NO_SESSION","ResponseMode","GrantType","CacheAccountType","Separators","CredentialType","CacheType","CodeChallengeMethodValues","PLAIN","S256","AuthorityMetadataSource","APP_METADATA","CLIENT_INFO","THE_FAMILY_ID","AUTHORITY_METADATA_CONSTANTS","CACHE_KEY","REFRESH_TIME_SECONDS","AuthenticationScheme","SERVER_TELEM_CONSTANTS","SCHEMA_VERSION","MAX_CUR_HEADER_BYTES","MAX_LAST_HEADER_BYTES","MAX_CACHED_ERRORS","CATEGORY_SEPARATOR","VALUE_SEPARATOR","OVERFLOW_TRUE","OVERFLOW_FALSE","UNKNOWN_ERROR","PasswordGrantConstants","ResponseCodes","RegionDiscoverySources","RegionDiscoveryOutcomes","CacheOutcome","JsonTypes","ThrottlingConstants","DEFAULT_THROTTLE_TIME_SECONDS","DEFAULT_MAX_THROTTLE_TIME_SECONDS","THROTTLING_PREFIX","X_MS_LIB_CAPABILITY_VALUE","Errors","INVALID_GRANT_ERROR","CLIENT_MISMATCH_ERROR","NativeExtensionMethod","BrowserCacheLocation","HTTP_REQUEST_TYPE","TemporaryCacheKeys","StaticCacheKeys","InMemoryCacheKeys","ApiId","InteractionType","InteractionStatus","BrowserConstants","INTERACTION_IN_PROGRESS_VALUE","POPUP_WIDTH","POPUP_HEIGHT","POPUP_NAME_PREFIX","DEFAULT_POLL_INTERVAL_MS","MSAL_SKU","NativeConstants","CHANNEL_ID","PREFERRED_EXTENSION_ID","MATS_TELEMETRY","WrapperSKU","DEFAULT_REQUEST","scopes","KEY_FORMAT_JWK","CacheLookupPolicy","DB_NAME","DB_VERSION","DB_TABLE_NAME","_defineProperty","obj","defineProperty","enumerable","configurable","writable","_assertThisInitialized","self","ReferenceError","requiredArgs","required","TypeError","toDate","argument","argStr","toString","Date","_typeof","getTime","console","warn","NaN","kTrue","v","konst","noop","identity","Symbol","asyncIterator","check","predicate","assignWithSymbols","target","source","getOwnPropertySymbols","forEach","flatMap","mapper","arr","map","remove","array","item","index","indexOf","splice","once","fn","called","kThrow","kReturn","thro","iterator","meta","throw","return","isSagaIterator","logError","sagaStack","internalErr","createEmptyArray","n","wrapSagaDispatch","SAGA_ACTION","shouldTerminate","res","TERMINATE","shouldCancel","TASK_CANCEL","shouldComplete","createAllStyleChildCallbacks","shape","parentCallback","totalCount","completed","completedCount","results","childCallbacks","chCbAtKey","isErr","getMetaInfo","location","getLocation","instrumented","SAGA_LOCATION","compose","funcs","reduce","zeroBuffer","isEmpty","put","ringBuffer","limit","overflowAction","pushIndex","popIndex","it","flush","items","doubledLimit","none","sliding","expanding","initialSize","TAKE","PUT","ALL","RACE","CALL","CPS","FORK","JOIN","CANCEL","SELECT","ACTION_CHANNEL","CANCELLED","FLUSH","GET_CONTEXT","SET_CONTEXT","makeEffect","IO","combinator","detach","eff","detached","multicastPattern","pattern","notUndef","multicast","process","channel$1","undef","all","effects","race","getFnCallDescriptor","fnDescriptor","string","_len3","_key3","spawn","_len4","_key4","taskOrTasks","SELF_CANCELLATION","select","_len5","_key5","actionChannel","pattern$1","buffer$1","buffer","delay","delayP","assign","this","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","_inherits","subClass","superClass","create","constructor","ClientAuthErrorMessage","clientInfoDecodingError","code","desc","clientInfoEmptyError","tokenParsingError","nullOrEmptyToken","endpointResolutionError","networkError","unableToGetOpenidConfigError","hashNotDeserialized","blankGuidGenerated","invalidStateError","stateMismatchError","stateNotFoundError","nonceMismatchError","nonceNotFoundError","authTimeNotFoundError","maxAgeTranspiredError","noTokensFoundError","multipleMatchingTokens","multipleMatchingAccounts","multipleMatchingAppMetadata","tokenRequestCannotBeMade","appendEmptyScopeError","removeEmptyScopeError","appendScopeSetError","emptyInputScopeSetError","DeviceCodePollingCancelled","DeviceCodeExpired","DeviceCodeUnknownError","NoAccountInSilentRequest","invalidCacheRecord","invalidCacheEnvironment","noAccountFound","CachePluginError","noCryptoObj","invalidCacheType","unexpectedAccountType","unexpectedCredentialType","invalidAssertion","invalidClientCredential","tokenRefreshRequired","userTimeoutReached","tokenClaimsRequired","noAuthorizationCodeFromServer","noAzureRegionDetected","accessTokenEntityNullError","bindingKeyNotRemovedError","logoutNotSupported","keyIdMissing","noNetworkConnectivity","userCanceledError","errorCode","errorMessage","setPrototypeOf","ClientAuthError","caughtError","createClientInfoEmptyError","caughtExtractionError","invalidRawTokenString","errDetail","createNetworkError","endpoint","split","hashParamObj","createInvalidStateError","invalidState","errorString","createStateMismatchError","missingState","createNonceMismatchError","createAuthTimeNotFoundError","createMaxAgeTranspiredError","missingNonce","createMultipleMatchingTokensInCacheError","createMultipleMatchingAccountsInCacheError","createMultipleMatchingAppMetadataInCacheError","createTokenRequestCannotBeMadeError","givenScope","appendError","createEmptyInputScopeSetError","createDeviceCodeCancelledError","createDeviceCodeExpiredError","createDeviceCodeUnknownError","createNoAccountInSilentRequestError","createNullOrUndefinedCacheRecord","createInvalidCacheEnvironmentError","createNoAccountFoundError","createCachePluginError","operationName","createInvalidCacheTypeError","createUnexpectedAccountTypeError","createUnexpectedCredentialTypeError","createInvalidAssertionError","createInvalidCredentialError","createRefreshRequiredError","createUserTimeoutReachedError","createTokenClaimsRequiredError","createNoAuthCodeInServerResponseError","createBindingKeyNotRemovedError","createLogoutNotSupportedError","createKeyIdMissingError","createNoNetworkConnectivityError","createUserCanceledError","authToken","StringUtils","createTokenNullOrEmptyError","matches","exec","createTokenParsingError","JSON","stringify","header","JWSPayload","JWSSig","str","strObj","parse","startsWith","search","endsWith","lastIndexOf","query","params","decode","decodeURIComponent","replace","pair","trim","entry","filter","matchPattern","input","RegExp","test","toInteger","dirtyNumber","number","Number","isNaN","Math","ceil","floor","EventType","excluded","sourceKeys","BrowserRouter","history","createHistory","render","Component","HashRouter","resolveToLocation","to","currentLocation","normalizeToLocation","createLocation","forwardRefShim","C","LinkAnchor","forwardedRef","innerRef","navigate","onClick","rest","event","ex","preventDefault","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","Link","component","RouterContext","href","createHref","isDuplicateNavigation","createPath","NavLink","ariaCurrent","activeClassName","activeStyle","classNameProp","className","exact","isActiveProp","isActive","locationProp","sensitive","strict","styleProp","style","toLocation","path","pathname","escapedPath","matchPath","classnames","join","joinClassnames","f","isArray","object","promise","p","then","pat","symbol","every","ch","close","sym","MULTICAST","AuthErrorMessage","suberror","AuthError","subError","correlationId","errDesc","hasOwn","classNames","classes","appendClass","parseValue","includes","newClass","default","__esModule","ThemeContext","useBootstrapPrefix","prefix","defaultPrefix","prefixes","hookCallback","some","hooks","setHookCallback","isObject","hasOwnProp","isObjectEmpty","getOwnPropertyNames","k","isUndefined","isNumber","isDate","arrLen","extend","valueOf","createUTC","format","locale","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","m","_pf","isValid","flags","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","isFrozen","_isValid","createInvalid","fun","len","momentProperties","updateInProgress","copyConfig","from","prop","val","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","argLen","slice","deprecations","deprecateSimple","isFunction","Function","set","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","output","_calendar","zeroFill","targetLength","forceSign","absNumber","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","h","hh","d","dd","w","ww","M","MM","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","diff","aliases","D","dates","date","days","day","weekdays","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","hours","hour","ms","milliseconds","millisecond","minutes","minute","months","month","Q","quarters","quarter","seconds","second","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","weeks","week","W","isoweeks","isoweek","years","year","normalizeUnits","units","toLowerCase","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","getPrioritizedUnits","unitsObj","u","unit","priority","sort","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","absFloor","toInt","argumentForCoercion","coercedNumber","isFinite","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","parseInt","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","stringGet","stringSet","prioritized","prioritizedLen","mod","daysInMonth","modMonth","o","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","min","setUTCMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","createDate","createUTCDate","UTC","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","charAt","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","values","data","getLocale","defineLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","defaults","c","currentDateArray","nowValue","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","temp","weekdayOverflow","curWeek","createLocal","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","inspect","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","_getPrototypeOf","getPrototypeOf","__proto__","createSymbol","CHANNEL_END_TYPE","MATCH","TASK","isProduction","invariant","condition","provided","toPropertyKey","_possibleConstructorReturn","warning","Image","PropTypes","bool","bsPrefix","fluid","rounded","roundedCircle","thumbnail","defaultProps","BrowserConfigurationAuthErrorMessage","BrowserConfigurationAuthError","createRedirectUriEmptyError","createPostLogoutRedirectUriEmptyError","createStorageNotSupportedError","givenStorageLocation","createRedirectCallbacksNotSetError","createStubPcaInstanceCalledError","createInMemoryRedirectUnavailableError","createEntropyNotProvided","MAX_SIGNED_31_BIT_INT","commonjsGlobal","globalThis","global","defaultValue","calculateChangedBits","contextProp","getUniqueId","emitter","handlers","on","handler","off","newValue","changedBits","createEventEmitter","getChildContext","componentWillReceiveProps","nextProps","oldValue","childContextTypes","isRequired","observedBits","getValue","onUpdate","setState","componentDidMount","componentWillUnmount","contextTypes","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","unlisten","listen","computeRootMatch","url","isExact","HistoryContext","MemoryRouter","Lifecycle","onMount","componentDidUpdate","prevProps","onUnmount","Prompt","when","method","block","release","cache","cacheLimit","cacheCount","generatePath","generator","pathToRegexp","compile","compilePath","pretty","Redirect","computedMatch","prevLocation","locationsAreEqual","cacheKey","end","pathCache","regexp","Route","Children","count","isEmptyChildren","addLeadingSlash","stripBasename","basename","createURL","staticHandler","StaticRouter","handlePush","navigateTo","handleReplace","handleListen","handleBlock","addBasename","go","goBack","goForward","Switch","element","child","isValidElement","cloneElement","withRouter","wrappedComponentRef","remainingProps","useHistory","useLocation","useParams","useRouteMatch","createChainedFunction","acc","isTrivialHref","SafeAnchor","_ref$as","disabled","onKeyDown","handleClick","stopPropagation","role","tabIndex","Button","variant","size","active","candidateSelectors","candidateSelector","NoElement","Element","msMatchesSelector","webkitMatchesSelector","getRootNode","ownerDocument","isInert","node","lookUp","inertAtt","getAttribute","parentNode","getCandidates","el","includeContainer","candidates","querySelectorAll","unshift","getCandidatesIteratively","elements","elementsToCheck","tagName","assigned","assignedElements","nestedCandidates","flatten","scopeParent","shadowRoot","getShadowRoot","validShadowRoot","shadowRootFilter","hasTabIndex","getTabIndex","attValue","isContentEditable","sortOrderedTabbables","documentOrder","isInput","isNonTabbableRadio","isRadio","radioSet","radioScope","form","queryRadios","CSS","escape","checked","nodes","getCheckedRadio","isTabbableRadio","isZeroArea","getBoundingClientRect","width","height","isHidden","displayCheck","getComputedStyle","visibility","nodeUnderDetails","parentElement","originalNode","rootNode","assignedSlot","host","nodeRoot","nodeRootHost","attached","contains","isNodeAttached","getClientRects","isNodeMatchingSelectorFocusable","isHiddenInput","isDetailsWithSummary","isDisabledFromFieldset","isNodeMatchingSelectorTabbable","isValidShadowRootTabbable","shadowHostNode","sortByOrder","regularTabbables","orderedTabbables","isScope","candidateTabindex","getSortOrderTabIndex","content","sortable","tabbable","container","focusable","isTabbable","focusableCandidateSelector","isFocusable","defaultOptions","getDefaultOptions","CardImg","DivStyledAsH5","divWithClassName","DivStyledAsH6","CardBody","createWithBsPrefix","CardTitle","CardSubtitle","CardLink","CardText","CardHeader","CardFooter","CardImgOverlay","Card","bg","text","border","body","cardContext","cardHeaderBsPrefix","CardContext","Img","Title","Subtitle","Body","Text","Header","Footer","ImgOverlay","buildClientInfo","rawClientInfo","crypto","decodedClientInfo","base64Decode","createClientInfoDecodingError","buildClientInfoFromHomeAccountId","homeAccountId","clientInfoParts","CLIENT_INFO_SEPARATOR","uid","utid","AuthorityType","rHyphen","pascalCase","_","chr","_ref$displayName","BsComponent","_ref2$as","Tag","resolvedPrefix","isAbsolute","spliceOne","list","pop","resolvePathname","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","part","valueEqual","aValue","bValue","stripLeadingSlash","hasBasename","stripTrailingSlash","hash","hashIndex","searchIndex","parsePath","decodeURI","URIError","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","ua","navigator","userAgent","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_window$location","createKey","random","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toIndex","allKeys","fromIndex","delta","revertPop","initialLocation","listenerCount","checkDOMListeners","addEventListener","removeEventListener","isBlocked","pushState","prevIndex","nextKeys","replaceState","unblock","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","substring","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","allPaths","baseTag","querySelector","pushHashPath","nextPaths","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","nextIndex","nextEntries","canGo","_extends3","_interopRequireDefault","_getPrototypeOf2","_classCallCheck3","_createClass3","_possibleConstructorReturn3","_inherits3","_react2","_propTypes2","_lottieWeb2","Lottie","_React$Component","_this","_ret","handleClickToPause","anim","isPaused","play","pause","eventListeners","loop","autoplay","animationData","rendererSettings","segments","renderer","loadAnimation","registerEvents","deRegisterEvents","destroy","isStopped","stop","playSegments","setSpeed","setDirection","speed","_this2","eventListener","eventName","_this3","_this4","_props2","ariaRole","ariaLabel","isClickToPauseDisabled","title","getSize","initial","lottieStyles","margin","outline","onClickHandler","propTypes","arrayOf","oneOfType","tooltip","elementType","Feedback","_ref$type","_ref$tooltip","FormContext","controlId","FormCheckInput","id","bsCustomPrefix","_ref$isValid","_ref$isInvalid","isInvalid","isStatic","_useContext","custom","FormCheckLabel","htmlFor","FormCheck","_ref$inline","inline","_ref$disabled","_ref$feedbackTooltip","feedbackTooltip","feedback","_ref$title","label","propCustom","innerFormContext","hasLabel","Fragment","Input","Label","FormFileInput","FormFileLabel","FormFile","dataBrowse","_ref$inputAs","inputAs","FormControl","_classes","htmlSize","plaintext","readOnly","_classes2","_classes3","_classes4","_classes5","FormGroup","FormLabel","column","srOnly","columnClass","Col","FormText","muted","FormRow","FormImpl","validated","Row","Group","Control","Check","File","__webpack_modules__","__unused_webpack_module","__w_pdfjs_require__","StatTimer","RenderingCancelledException","PixelsPerInch","PageViewport","PDFDateString","LinkTarget","DOMStandardFontDataFactory","DOMSVGFactory","DOMCanvasFactory","DOMCMapReaderFactory","addLinkAttributes","link","_ref4","rel","_ref4$enabled","enabled","_util","assert","urlNullRemoved","removeNullCharacters","onclick","targetStr","SELF","BLANK","PARENT","TOP","DEFAULT_LINK_REL","deprecated","details","log","getFilenameFromUrl","getPdfFilenameFromUrl","defaultFilename","isDataScheme","reFilename","splitURI","suggestedFilename","getXfaPageViewport","xfaPage","_ref6","_ref6$scale","scale","_ref6$rotation","rotation","_xfaPage$attributes$s","attributes","viewBox","isPdfFile","filename","isValidFetchUrl","loadScript","src","removeScriptElement","Promise","resolve","reject","script","onload","evt","onerror","head","documentElement","appendChild","_regenerator","_base_factory","_createForOfIteratorHelper","allowArrayLike","minLen","_arrayLikeToArray","_unsupportedIterableToArray","F","_e","normalCompletion","didErr","step","_e2","asyncGeneratorStep","gen","_next","_throw","info","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","Super","NewTarget","PDF","PDF_TO_CSS_UNITS","shadow","_BaseCanvasFactory","_super","_ref$ownerDocument","_document","canvas","BaseCanvasFactory","fetchData","_x","_fetchData","mark","_callee","asTypedArray","response","_args","wrap","_context","baseURI","fetch","sent","statusText","t1","Uint8Array","arrayBuffer","t2","t0","t3","stringToBytes","t4","abrupt","request","XMLHttpRequest","open","responseType","onreadystatechange","readyState","DONE","status","responseText","send","_BaseCMapReaderFactor","_super2","compressionType","isCompressed","cMapData","BaseCMapReaderFactory","_BaseStandardFontData","_super3","BaseStandardFontDataFactory","_BaseSVGFactory","_super4","createElementNS","BaseSVGFactory","_ref2$offsetX","offsetX","_ref2$offsetY","offsetY","_ref2$dontFlip","dontFlip","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","centerX","centerY","transform","_ref3$scale","_ref3$rotation","_ref3$offsetX","_ref3$offsetY","_ref3$dontFlip","Util","applyTransform","rect","topLeft","bottomRight","applyInverseTransform","_BaseException","_super5","BaseException","pdfDateStringRegex","started","times","start","_step","outBuf","longest","_iterator","_step2","_iterator2","_time","padEnd","baseUrl","protocol","URL","universalTimeRelation","offsetHour","offsetMinute","__unused_webpack_exports","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","toStringTag","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","awrap","async","iter","reverse","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","nmd","regeneratorRuntime","accidentalStrictMode","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","VerbosityLevel","UnknownErrorException","UnexpectedResponseException","UNSUPPORTED_FEATURES","TextRenderingMode","StreamType","RenderingIntentFlag","PermissionFlag","PasswordResponses","PasswordException","PageActionEventType","OPS","MissingPDFException","IsLittleEndianCached","IsEvalSupportedCached","InvalidPDFException","ImageKind","IDENTITY_MATRIX","FormatError","FontType","FONT_IDENTITY_MATRIX","DocumentActionEventType","CMapCompressionType","AnnotationType","AnnotationStateModelType","AnnotationReviewState","AnnotationReplyType","AnnotationMode","AnnotationMarkedState","AnnotationFlag","AnnotationFieldFlag","AnnotationBorderStyleType","AnnotationActionEventType","AbortException","arrayByteLength","arraysToBytes","resultLength","itemLength","byteLength","bytesToString","bytes","MAX_ARGUMENT_COUNT","fromCharCode","strBuf","chunkEnd","chunk","subarray","createObjectURL","contentType","forceDataSchema","Blob","digits","b1","b2","b3","createPromiseCapability","capability","isSettled","reason","createValidAbsoluteUrl","addDefaultProtocol","dots","tryConvertEncoding","stringToUTF8String","absoluteUrl","_isValidProtocol","escapeString","getModificationDate","padStart","getVerbosityLevel","verbosity","INFOS","isArrayBuffer","isArrayEqual","isAscii","isBool","isNum","isSameOrigin","otherUrl","origin","objectFromMap","_e3","_step$value","_arrayWithHoles","_s","_arr","_n","_iterableToArrayLimit","_nonIterableRest","objectSize","replaceInvisible","InvisibleCharactersRegExp","NullCharactersRegExp","setVerbosityLevel","level","isInteger","string32","stringToPDFString","charCodeAt","_i2","_i3","PDFStringTranslateTable","stringToUTF16BEString","buf","_char","unreachable","utf8StringToString","unescape","encodeURIComponent","ANY","DISPLAY","PRINT","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","MARKED","REVIEW","UNMARKED","ACCEPTED","REJECTED","COMPLETED","GROUP","REPLY","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","SOLID","DASHED","BEVELED","INSET","X","U","Fo","Bl","PO","PC","PV","PI","K","V","WC","WS","DS","WP","DP","O","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","TYPE1","TYPE1STANDARD","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","ERRORS","WARNINGS","BINARY","STREAM","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","signatures","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorOperatorList","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","errorContentSubStream","NEED_PASSWORD","INCORRECT_PASSWORD","cond","_BaseException2","_BaseException3","_BaseException4","_BaseException5","_BaseException6","_super6","_BaseException7","_super7","buffer8","Uint32Array","isLittleEndian","isEvalSupported","hexNumbers","r","g","m1","m2","transpose","sqrt","sx","sy","rect1","rect2","compare","orderedX","orderedY","normalizeRect","x0","y0","x1","y1","x2","y2","x3","y3","b2ac","sqrtb2ac","tvalues","bounds","mt","jlen","_is_node","_pdfjsCompatibilityChecked","btoa","isNodeJS","chars","Buffer","atob","DOMMatrix","fromEntries","allSettled","ReadableStream","versions","nw","electron","$","getOwnPropertyDescriptor","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","DESCRIPTORS","propertyIsEnumerableModule","createPropertyDescriptor","toIndexedObject","IE8_DOM_DEFINE","$getOwnPropertyDescriptor","P","fails","$propertyIsEnumerable","propertyIsEnumerable","NASHORN_BUG","bitmap","IndexedObject","requireObjectCoercible","uncurryThis","classof","FunctionPrototype","callBind","stringSlice","toPrimitive","isSymbol","getMethod","ordinaryToPrimitive","wellKnownSymbol","TO_PRIMITIVE","pref","exoticToPrim","isCallable","getBuiltIn","isPrototypeOf","USE_SYMBOL_AS_UID","namespace","NATIVE_SYMBOL","V8_VERSION","Deno","v8","aCallable","tryToString","shared","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","description","IS_PURE","mode","copyright","SHARED","postfix","EXISTS","definePropertyModule","anObject","$defineProperty","Attributes","inspectSource","InternalStateModule","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","getInternalState","enforceInternalState","enforce","TEMPLATE","unsafe","simple","functionToString","has","NATIVE_WEAK_MAP","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","wmget","wmhas","wmset","metadata","facade","STATE","getterFor","TYPE","getDescriptor","PROPER","ownKeys","getOwnPropertyDescriptorModule","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","internalObjectKeys","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","toIntegerOrInfinity","integer","toLength","replacement","feature","detection","normalize","POLYFILL","NATIVE","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","fromArray","CSSMatrix","m11","m12","m13","m14","m21","m22","m23","m24","m31","m32","m33","m34","m41","m42","m43","m44","M11","M12","M21","M22","M41","M42","fromMatrix","fromString","invalidStringError","tf","components","z","xyz","xyza","multiply","translate","rotateAxisAngle","rotate","skewX","skewY","axis","idx","axeValues","Translate","Rotate","rx","ry","rz","degToRad","radX","radY","radZ","cosx","cos","sinx","sin","cosy","siny","cosz","sinz","RotateAxisAngle","alpha","angle","sinA","cosA","sinA2","Y","Z","z2","Scale","SkewX","radA","tan","SkewY","Multiply","ARGS","setMatrixValue","prototypeAccessors","isIdentity","is2D","Float64Array","Float32Array","RX","RY","RZ","transformPoint","defineProperties","Version","addToUnscopables","Iterators","defineIterator","ARRAY_ITERATOR","setInternalState","iterated","kind","Arguments","UNSCOPABLES","ArrayPrototype","activeXDocument","enumBugKeys","html","documentCreateElement","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","NullProtoObjectViaActiveX","write","parentWindow","NullProtoObject","ActiveXObject","domain","iframeDocument","iframe","JS","display","contentWindow","NullProtoObjectViaIFrame","Properties","objectKeys","FunctionName","createIteratorConstructor","setToStringTag","IteratorsCore","PROPER_FUNCTION_NAME","BUGGY_SAFARI_ITERATORS","ITERATOR","KEYS","VALUES","ENTRIES","returnThis","Iterable","NAME","IteratorConstructor","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","TO_STRING_TAG","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","ENUMERABLE_NEXT","PrototypeOfArrayIteratorPrototype","arrayIterator","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","TAG","aPossiblePrototype","CORRECT_SETTER","iterate","createProperty","AS_ENTRIES","isArrayIteratorMethod","getIterator","getIteratorMethod","iteratorClose","Result","stopped","ResultPrototype","unboundFunction","iterFn","IS_ITERATOR","INTERRUPTED","callFn","usingIterator","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tag","tryGet","callee","innerResult","innerError","propertyKey","clearErrorStack","installErrorCause","normalizeStringArgument","ERROR_STACK_INSTALLABLE","$AggregateError","errors","isInstance","AggregateErrorPrototype","errorsArray","AggregateError","arraySlice","TEST","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","IS_FIREFOX_OR_SAFARI_STACK","dropEntries","fin","cause","$default","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","NativePromise","redefineAll","setSpecies","anInstance","checkCorrectnessOfIteration","speciesConstructor","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","perform","IS_BROWSER","IS_NODE","SPECIES","PROMISE","getInternalPromiseState","NativePromisePrototype","PromiseConstructor","PromisePrototype","newPromiseCapability","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","SUBCLASSING","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","INCORRECT_ITERATION","isThenable","isReject","notified","chain","reactions","exited","reaction","fail","rejection","onHandleUnhandled","enter","exit","onUnhandled","initEvent","isUnhandled","emit","parent","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","$promiseResolve","counter","remaining","alreadyCalled","CONSTRUCTOR_NAME","Prototype","SAFE_CLOSING","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","aConstructor","defaultConstructor","S","isConstructor","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","defer","port","IS_IOS","setImmediate","clearImmediate","Dispatch","MessageChannel","queue","ONREADYSTATECHANGE","run","runner","post","postMessage","nextTick","port2","port1","onmessage","importScripts","removeChild","setTimeout","toggle","macrotask","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","createTextNode","observe","characterData","Pebble","promiseCapability","PromiseCapability","$$resolve","$$reject","PROMISE_ANY_ERROR","any","alreadyResolved","alreadyRejected","real","onFinally","STRING_ITERATOR","point","CONVERT_TO_STRING","position","codeAt","SymbolPolyfill","globals","typeIsObject","rethrowAssertionErrorRejection","originalPromise","originalPromiseThen","originalPromiseResolve","originalPromiseReject","newPromise","promiseResolvedWith","promiseRejectedWith","PerformPromiseThen","uponPromise","uponFulfillment","uponRejection","transformPromiseWith","fulfillmentHandler","rejectionHandler","setPromiseIsHandledToTrue","globalQueueMicrotask","resolvedPromise","reflectCall","promiseCall","SimpleQueue","_cursor","_size","_front","_elements","_back","oldBack","newBack","QUEUE_MAX_ARRAY_SIZE","oldFront","newFront","oldCursor","newCursor","peek","front","cursor","ReadableStreamReaderGenericInitialize","reader","stream","_ownerReadableStream","_reader","_state","defaultReaderClosedPromiseInitialize","defaultReaderClosedPromiseResolve","defaultReaderClosedPromiseInitializeAsResolved","defaultReaderClosedPromiseInitializeAsRejected","_storedError","ReadableStreamReaderGenericCancel","ReadableStreamCancel","ReadableStreamReaderGenericRelease","defaultReaderClosedPromiseReject","defaultReaderClosedPromiseResetToRejected","readerLockException","_closedPromise","_closedPromise_resolve","_closedPromise_reject","AbortSteps","ErrorSteps","CancelSteps","PullSteps","NumberIsFinite","MathTrunc","trunc","assertDictionary","assertFunction","assertObject","assertRequiredArgument","assertRequiredField","convertUnrestrictedDouble","censorNegativeZero","convertUnsignedLongLongWithEnforceRange","MAX_SAFE_INTEGER","integerPart","assertReadableStream","IsReadableStream","AcquireReadableStreamDefaultReader","ReadableStreamDefaultReader","ReadableStreamAddReadRequest","readRequest","_readRequests","ReadableStreamFulfillReadRequest","_closeSteps","_chunkSteps","ReadableStreamGetNumReadRequests","ReadableStreamHasDefaultReader","IsReadableStreamDefaultReader","AsyncIteratorPrototype","IsReadableStreamLocked","defaultReaderBrandCheckException","read","resolvePromise","rejectPromise","ReadableStreamDefaultReaderRead","_errorSteps","releaseLock","_disturbed","_readableStreamController","closed","ReadableStreamAsyncIteratorImpl","preventCancel","_ongoingPromise","_isFinished","_preventCancel","nextSteps","_nextSteps","returnSteps","_returnSteps","ReadableStreamAsyncIteratorPrototype","IsReadableStreamAsyncIterator","_asyncIteratorImpl","streamAsyncIteratorBrandCheckException","NumberIsNaN","CreateArrayFromList","CopyDataBlockBytes","dest","destOffset","srcOffset","ArrayBufferSlice","begin","ArrayBuffer","CloneAsUint8Array","byteOffset","DequeueValue","_queue","_queueTotalSize","EnqueueValueWithSize","Infinity","RangeError","ResetQueue","ReadableStreamBYOBRequest","IsReadableStreamBYOBRequest","byobRequestBrandCheckException","_view","respond","bytesWritten","_associatedReadableByteStreamController","ReadableByteStreamControllerRespond","respondWithNewView","view","isView","ReadableByteStreamControllerRespondWithNewView","ReadableByteStreamController","IsReadableByteStreamController","byteStreamControllerBrandCheckException","ReadableByteStreamControllerGetBYOBRequest","ReadableByteStreamControllerGetDesiredSize","_closeRequested","_controlledReadableByteStream","ReadableByteStreamControllerClose","enqueue","ReadableByteStreamControllerEnqueue","ReadableByteStreamControllerError","ReadableByteStreamControllerClearPendingPullIntos","_cancelAlgorithm","ReadableByteStreamControllerClearAlgorithms","ReadableByteStreamControllerHandleQueueDrain","autoAllocateChunkSize","_autoAllocateChunkSize","bufferE","pullIntoDescriptor","bufferByteLength","bytesFilled","elementSize","viewConstructor","readerType","_pendingPullIntos","ReadableByteStreamControllerCallPullIfNeeded","controller","shouldPull","_started","ReadableStreamHasBYOBReader","ReadableStreamGetNumReadIntoRequests","desiredSize","ReadableByteStreamControllerShouldCallPull","_pulling","_pullAgain","_pullAlgorithm","ReadableByteStreamControllerInvalidateBYOBRequest","ReadableByteStreamControllerCommitPullIntoDescriptor","filledView","ReadableByteStreamControllerConvertPullIntoDescriptor","readIntoRequest","_readIntoRequests","ReadableStreamFulfillReadIntoRequest","ReadableByteStreamControllerEnqueueChunkToQueue","ReadableByteStreamControllerFillPullIntoDescriptorFromQueue","currentAlignedBytes","maxBytesToCopy","maxBytesFilled","maxAlignedBytes","totalBytesToCopyRemaining","ready","headOfQueue","bytesToCopy","destStart","ReadableByteStreamControllerFillHeadPullIntoDescriptor","ReadableStreamClose","_byobRequest","ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue","ReadableByteStreamControllerShiftPendingPullInto","ReadableByteStreamControllerRespondInternal","firstDescriptor","ReadableByteStreamControllerRespondInClosedState","remainderSize","remainder","ReadableByteStreamControllerRespondInReadableState","transferredBuffer","firstPendingPullInto","ReadableStreamError","byobRequest","SetUpReadableStreamBYOBRequest","_strategyHWM","viewByteLength","SetUpReadableByteStreamController","startAlgorithm","pullAlgorithm","cancelAlgorithm","highWaterMark","AcquireReadableStreamBYOBReader","ReadableStreamBYOBReader","ReadableStreamAddReadIntoRequest","IsReadableStreamBYOBReader","byobReaderBrandCheckException","ReadableStreamBYOBReaderRead","DataView","BYTES_PER_ELEMENT","emptyView","ReadableByteStreamControllerPullInto","ExtractHighWaterMark","strategy","defaultHWM","ExtractSizeAlgorithm","convertQueuingStrategy","init","convertQueuingStrategySize","convertUnderlyingSinkAbortCallback","original","convertUnderlyingSinkCloseCallback","convertUnderlyingSinkStartCallback","convertUnderlyingSinkWriteCallback","assertWritableStream","IsWritableStream","supportsAbortController","AbortController","WritableStream","rawUnderlyingSink","rawStrategy","underlyingSink","abort","convertUnderlyingSink","InitializeWritableStream","sizeAlgorithm","WritableStreamDefaultController","writeAlgorithm","closeAlgorithm","abortAlgorithm","SetUpWritableStreamDefaultController","SetUpWritableStreamDefaultControllerFromUnderlyingSink","streamBrandCheckException$2","IsWritableStreamLocked","WritableStreamAbort","WritableStreamCloseQueuedOrInFlight","WritableStreamClose","getWriter","AcquireWritableStreamDefaultWriter","WritableStreamDefaultWriter","_writer","_writableStreamController","_writeRequests","_inFlightWriteRequest","_closeRequest","_inFlightCloseRequest","_pendingAbortRequest","_backpressure","_abortReason","_abortController","_promise","wasAlreadyErroring","_resolve","_reject","_reason","_wasAlreadyErroring","WritableStreamStartErroring","closeRequest","writer","defaultWriterReadyPromiseResolve","closeSentinel","WritableStreamDefaultControllerAdvanceQueueIfNeeded","WritableStreamDealWithRejection","WritableStreamFinishErroring","WritableStreamDefaultWriterEnsureReadyPromiseRejected","WritableStreamHasOperationMarkedInFlight","storedError","writeRequest","abortRequest","WritableStreamRejectCloseAndClosedPromiseIfNeeded","defaultWriterClosedPromiseReject","WritableStreamUpdateBackpressure","backpressure","defaultWriterReadyPromiseInitialize","defaultWriterReadyPromiseReset","locked","_ownerWritableStream","defaultWriterReadyPromiseInitializeAsResolved","defaultWriterClosedPromiseInitialize","defaultWriterReadyPromiseInitializeAsRejected","defaultWriterClosedPromiseResolve","defaultWriterClosedPromiseInitializeAsRejected","IsWritableStreamDefaultWriter","defaultWriterBrandCheckException","defaultWriterLockException","WritableStreamDefaultControllerGetDesiredSize","WritableStreamDefaultWriterGetDesiredSize","_readyPromise","WritableStreamDefaultWriterAbort","WritableStreamDefaultWriterClose","WritableStreamDefaultWriterRelease","WritableStreamDefaultWriterWrite","WritableStreamDefaultWriterEnsureClosedPromiseRejected","_closedPromiseState","defaultWriterClosedPromiseResetToRejected","_readyPromiseState","defaultWriterReadyPromiseReject","defaultWriterReadyPromiseResetToRejected","releasedError","chunkSize","_strategySizeAlgorithm","chunkSizeE","WritableStreamDefaultControllerErrorIfNeeded","WritableStreamDefaultControllerGetChunkSize","WritableStreamAddWriteRequest","enqueueE","_controlledWritableStream","WritableStreamDefaultControllerGetBackpressure","WritableStreamDefaultControllerWrite","IsWritableStreamDefaultController","defaultControllerBrandCheckException$2","signal","WritableStreamDefaultControllerError","_abortAlgorithm","WritableStreamDefaultControllerClearAlgorithms","createAbortController","_writeAlgorithm","_closeAlgorithm","WritableStreamMarkCloseRequestInFlight","sinkClosePromise","WritableStreamFinishInFlightClose","WritableStreamFinishInFlightCloseWithError","WritableStreamDefaultControllerProcessClose","WritableStreamMarkFirstWriteRequestInFlight","sinkWritePromise","WritableStreamFinishInFlightWrite","WritableStreamFinishInFlightWriteWithError","WritableStreamDefaultControllerProcessWrite","_readyPromise_resolve","_readyPromise_reject","abortReason","NativeDOMException","DOMException","DOMException$1","isDOMExceptionConstructor","captureStackTrace","createDOMExceptionPolyfill","ReadableStreamPipeTo","preventClose","preventAbort","shuttingDown","currentWrite","actions","shutdownWithAction","aborted","isOrBecomesErrored","shutdown","WritableStreamDefaultWriterCloseWithErrorPropagation","destClosed_1","waitForWritesToFinish","oldCurrentWrite","originalIsError","originalError","doTheRest","finalize","newError","isError","resolveLoop","rejectLoop","resolveRead","rejectRead","ReadableStreamDefaultController","IsReadableStreamDefaultController","defaultControllerBrandCheckException$1","ReadableStreamDefaultControllerGetDesiredSize","ReadableStreamDefaultControllerCanCloseOrEnqueue","ReadableStreamDefaultControllerClose","ReadableStreamDefaultControllerEnqueue","ReadableStreamDefaultControllerError","ReadableStreamDefaultControllerClearAlgorithms","_controlledReadableStream","ReadableStreamDefaultControllerCallPullIfNeeded","ReadableStreamDefaultControllerShouldCallPull","SetUpReadableStreamDefaultController","ReadableStreamTee","cloneForBranch2","reason1","reason2","branch1","branch2","resolveCancelPromise","reading","readAgainForBranch1","readAgainForBranch2","canceled1","canceled2","cancelPromise","forwardReaderError","thisReader","pullWithDefaultReader","chunk1","chunk2","cloneE","pull1Algorithm","pull2Algorithm","pullWithBYOBReader","forBranch2","byobBranch","otherBranch","byobCanceled","clonedChunk","otherCanceled","cancel1Algorithm","compositeReason","cancelResult","cancel2Algorithm","CreateReadableByteStream","ReadableByteStreamTee","readAgain","CreateReadableStream","ReadableStreamDefaultTee","convertUnderlyingSourceCancelCallback","convertUnderlyingSourcePullCallback","convertUnderlyingSourceStartCallback","convertReadableStreamType","convertReadableStreamReaderMode","convertPipeOptions","isAbortSignal","assertAbortSignal","rawUnderlyingSource","underlyingSource","pull","convertUnderlyingDefaultOrByteSource","InitializeReadableStream","underlyingByteSource","SetUpReadableByteStreamControllerFromUnderlyingSource","SetUpReadableStreamDefaultControllerFromUnderlyingSource","streamBrandCheckException$1","getReader","rawOptions","convertReaderOptions","pipeThrough","rawTransform","readable","convertReadableWritablePair","pipeTo","destination","tee","impl","AcquireReadableStreamAsyncIterator","convertIteratorOptions","convertQueuingStrategyInit","byteLengthSizeFunction","ByteLengthQueuingStrategy","_byteLengthQueuingStrategyHighWaterMark","IsByteLengthQueuingStrategy","byteLengthBrandCheckException","countSizeFunction","CountQueuingStrategy","_countQueuingStrategyHighWaterMark","IsCountQueuingStrategy","countBrandCheckException","convertTransformerFlushCallback","convertTransformerStartCallback","convertTransformerTransformCallback","TransformStream","rawTransformer","rawWritableStrategy","rawReadableStrategy","writableStrategy","readableStrategy","transformer","readableType","writableType","convertTransformer","startPromise_resolve","readableHighWaterMark","readableSizeAlgorithm","writableHighWaterMark","writableSizeAlgorithm","startPromise","_transformStreamController","_backpressureChangePromise","_writable","TransformStreamDefaultControllerPerformTransform","TransformStreamDefaultSinkWriteAlgorithm","TransformStreamError","TransformStreamDefaultSinkAbortAlgorithm","_readable","flushPromise","_flushAlgorithm","TransformStreamDefaultControllerClearAlgorithms","TransformStreamDefaultSinkCloseAlgorithm","TransformStreamSetBackpressure","TransformStreamDefaultSourcePullAlgorithm","TransformStreamErrorWritableAndUnblockWrite","CreateWritableStream","_backpressureChangePromise_resolve","InitializeTransformStream","TransformStreamDefaultController","transformAlgorithm","TransformStreamDefaultControllerEnqueue","transformResultE","flushAlgorithm","_controlledTransformStream","_transformAlgorithm","SetUpTransformStreamDefaultController","SetUpTransformStreamDefaultControllerFromTransformer","IsTransformStream","streamBrandCheckException","IsTransformStreamDefaultController","defaultControllerBrandCheckException","terminate","TransformStreamDefaultControllerTerminate","readableController","ReadableStreamDefaultControllerHasBackpressure","_asyncToGenerator","_createCanvas","getContext","canvasAndContext","_ref$baseUrl","_ref$isCompressed","_fetch","_ref3$baseUrl","_fetch2","_callee2","_context2","_x2","svg","_createSVG","setAttribute","build","RenderTask","PDFWorker","PDFPageProxy","PDFDocumentProxy","PDFDocumentLoadingTask","PDFDataRangeTransport","LoopbackPort","DefaultStandardFontDataFactory","DefaultCanvasFactory","DefaultCMapReaderFactory","getDocument","setPDFNetworkStreamFactory","_display_utils","_font_loader","_node_utils","_annotation_storage","_canvas","_worker_options","_message_handler","_metadata","_optional_content_config","_transport_stream","_xfa_text","_classPrivateFieldInitSpec","privateMap","_checkPrivateRedeclaration","privateCollection","_classPrivateFieldSet","receiver","_classApplyDescriptorSet","_classExtractFieldDescriptor","_classPrivateFieldGet","_classApplyDescriptorGet","_slicedToArray","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","NodeCanvasFactory","NodeCMapReaderFactory","NodeStandardFontDataFactory","createPDFNetworkStream","pdfNetworkStreamFactory","range","rangeTransport","rangeChunkSize","CMapReaderFactory","StandardFontDataFactory","ignoreErrors","stopAtErrors","fontExtraProperties","pdfBug","enableXfa","docBaseUrl","maxImageSize","useWorkerFetch","disableFontFace","useSystemFonts","disableRange","disableStream","disableAutoFetch","workerParams","GlobalWorkerOptions","workerPort","fromPort","_worker","docId","destroyed","workerIdPromise","_fetchDocument","networkStreamPromise","networkStream","PDFDataTransportStream","initialData","progressiveDone","contentDispositionFilename","httpHeaders","withCredentials","workerId","messageHandler","MessageHandler","transport","WorkerTransport","_transport","_capability","_x3","_x4","_fetchDocument2","_callee7","pdfDataRangeTransport","_context7","sendWithPromise","apiVersion","password","cMapUrl","standardFontDataUrl","idCounters","doc","onPassword","onProgress","onUnsupportedFeature","_destroy","_this$_transport","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","loaded","_step3","_iterator3","_step4","_iterator4","pdfInfo","_pdfInfo","fingerprints","_value","stats","streamTypes","fontTypes","annotationStorage","numPages","_htmlForXfa","pageNumber","getPage","getPageIndex","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJavaScript","getDocJSActions","getOutline","getOptionalContentConfig","getPermissions","getMetadata","getMarkInfo","getData","downloadInfoCapability","keepLoadedFonts","startCleanup","isPureXfa","loadingTask","loadingParams","saveDocument","getFieldObjects","hasJSActions","getCalculationOrderIds","pageIndex","pageInfo","_pageIndex","_pageInfo","_ownerDocument","_stats","_pdfBug","commonObjs","objs","PDFObjects","cleanupAfterRender","pendingCleanup","_intentStates","Map","_annotationPromises","userUnit","_ref4$intent","intent","intentArgs","getRenderingIntent","getAnnotations","renderingIntent","annotations","_step5","_iterator5","annotation","titleObj","contentsObj","_jsActionsPromise","getPageJSActions","_getXfa","_callee3","_this$_transport$_htm","_context3","_ref5","_arguments$","_arguments$2","_intentState","_this5","canvasContext","viewport","_ref5$intent","_ref5$annotationMode","annotationMode","_ref5$transform","_ref5$imageLayer","imageLayer","_ref5$canvasFactory","canvasFactory","_ref5$background","background","_ref5$optionalContent","optionalContentConfigPromise","_ref5$annotationCanva","annotationCanvasMap","renderInteractiveForms","includeAnnotationStorage","intentState","streamReaderCancelTimeout","clearTimeout","canvasFactoryInstance","intentPrint","displayReadyCapability","operatorList","fnArray","argsArray","lastChunk","_pumpOperatorList","renderTasks","internalRenderTask","_tryCleanup","_abortOperatorList","timeEnd","InternalRenderTask","useRequestAnimationFrame","Set","renderTask","_ref7","transparency","optionalContentConfig","initializeGraphics","operatorListChanged","opListTask","_intentState2","_ref8","_ref8$intent","_ref8$annotationMode","opListReadCapability","_ref9","_ref9$normalizeWhites","normalizeWhitespace","_ref9$disableCombineT","disableCombineTextItems","_ref9$includeMarkedCo","includeMarkedContent","sendWithStream","combineTextItems","textContent","getXfa","xfa","XfaText","readableStream","streamTextContent","styles","pump","_ref10","_textContent$items","_structTreePromise","getStructTree","_step6","waitOn","_iterator6","force","_step7","_iterator7","resetStats","_step8","_iterator8","_step8$value","operatorListChunk","_step9","_iterator9","_ref11","_this6","serializable","streamReader","_ref12","_renderPageChunk","_step10","_iterator10","_ref13","_this7","_ref13$force","_step11","_iterator11","_step11$value","curCacheKey","cleanup","_listeners","_deferred","transfers","_this8","structuredClone","cloned","fallbackCloneValue","_step12","_iterator12","_step12$value","_step13","_iterator13","_val","_value$hasOwnProperty","cloneValue","_step14","_iterator14","PDFWorkerUtil","isWorkerDisabled","fallbackWorkerSrc","fakeWorkerId","_document$currentScri","pdfjsFilePath","currentScript","createCDNWrapper","_ref14","_ref14$name","_ref14$port","_ref14$verbosity","_workerPorts","_port","_webWorker","_messageHandler","_initializeFromPort","_initialize","_this9","Worker","_mainThreadWorkerMessageHandler","workerSrc","terminateEarly","onWorkerError","_setupFakeWorker","sendTest","testObj","_this10","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","_globalThis$pdfjsWork","pdfjsWorker","_this11","loader","_ref15","_callee4","mainWorkerMessageHandler","_callee4$","_context4","eval","getWorkerSrc","_docStats","_pageCache","_pagePromises","_metadataPromise","fontLoader","FontLoader","_onUnsupportedFeature","styleElement","_params","cMapPacked","destroyCapability","_passwordCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","AnnotationStorage","isOpList","lastModified","_this12","_step15","_iterator15","page","resetModified","terminated","_getFieldObjectsPromise","_hasJSActionsPromise","cancelAllRequests","_this13","sink","getFullReader","onPull","_ref16","onCancel","readyReason","headersCapability","fullReader","headersReady","_loadingTask$onProgre","isStreamingSupported","isRangeSupported","_loadingTask$onProgre2","contentLength","rangeReader","getRangeReader","_ref17","_ref18","_numPages","htmlForXfa","_loadingTask$onProgre3","_startRenderPage","_ref19","_globalThis$FontInspe","_ref20","exportedData","exportedError","fontRegistry","FontInspector","registerFont","fontAdded","FontFaceObject","_ref21","_imageData$data","_ref22","imageData","pageProxy","_loadingTask$onProgre4","freeze","_ref23","_this$loadingTask$onU","_this$loadingTask","featureId","_this14","cachedPromise","_this$_fullReader$fil","_this$_fullReader","_this15","OptionalContentConfig","_this16","_this16$_fullReader$f","_this16$_fullReader","_this16$_fullReader$c","_this16$_fullReader2","Metadata","_startCleanup","_callee5","_iterator16","_step16","_args5","_context5","_objs","objId","resolved","_ensureObj","_internalRenderTask","onContinue","_ref24","_ref24$useRequestAnim","_ref24$pdfBug","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_ref25","_globalThis$StepperMa","_ref25$transparency","canvasInUse","StepperManager","stepper","nextBreakPoint","getNextBreakPoint","_this$params","gfx","CanvasGraphics","beginDrawing","endDrawing","updateOperatorList","_this17","requestAnimationFrame","_next2","_callee6","_context6","executeOperatorList","WeakSet","BaseFontLoader","nativeFontFaces","nativeFontFace","fonts","rule","getElementsByTagName","styleSheet","sheet","insertRule","cssRules","_bind","missingFile","isFontLoadingAPISupported","createNativeFontFace","addNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","_this$_document","hasFonts","rules","fontsToLoad","_BaseFontLoader","GenericFontLoader","loadingContext","requests","nextRequestId","loadTestFontId","supported","otherRequest","int32","spliceString","insert","ctx","_loadTestFont","XXXX_VALUE","checksum","loadedName","div","top","left","_names","span","fontFamily","isFontReady","fillText","getImageData","translatedData","_ref2$isEvalSupported","_ref2$disableFontFace","_ref2$ignoreErrors","_ref2$fontRegistry","compiledGlyphs","cssFontInfo","css","weight","fontWeight","italicAngle","FontFace","mimetype","character","cmds","jsBuf","cmd","_current","readFile","createCanvas","_storage","_timeStamp","_modified","onSetModified","onResetModified","modified","_Object$entries","_Object$entries$_i","_setModified","_pattern_helper","MAX_GROUP_SIZE","FULL_CHUNK_HEIGHT","addContextCurrentTransform","mozCurrentTransform","_originalSave","_originalRestore","_originalRotate","_originalScale","_originalTranslate","_originalTransform","_originalSetTransform","setTransform","_originalResetTransform","resetTransform","_transformMatrix","_transformStack","_setLineWidth","_getLineWidth","_this$_transformMatri","ad_bc","bc_ad","old","cosValue","sinValue","CachedCanvases","trackTransform","canvasEntry","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","fillColor","strokeColor","patternFill","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","startNewPathAndClipBox","clipBox","_Util$applyTransform2","minX","minY","maxX","maxY","box","bezierBoundingBox","updatePathMinMax","pathType","PathType","singularValueDecompose2dScale","xStrokePad","yStrokePad","intersect","getPathBoundingBox","putBinaryImageData","imgData","ImageData","putImageData","destPos","thisChunkHeight","elemsInThisChunk","transferMapRed","transferMapGreen","transferMapBlue","transferMapGray","partialChunkHeight","fullChunks","totalChunks","chunkImgData","createImageData","srcPos","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","srcDiff","kEnd","kEndUnrolled","mask","srcByte","hasTransferMaps","_k","_k2","_hasTransferMaps","_k3","putBinaryImageMask","elem","copyCtxState","sourceCtx","destCtx","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","strokeStyle","fillStyle","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","composeSMaskBackdrop","r0","g0","b0","alpha_","composeSMaskAlpha","maskData","layerData","transferMap","composeSMaskLuminosity","composeSMask","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","maskCtx","subtype","backdrop","maskOffsetX","maskOffsetY","composeFn","hasBackdrop","row","chunkHeight","genericComposeSMask","drawImage","getImageSmoothingEnabled","interpolate","fround","actualScale","devicePixelRatio","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","canvasCtx","stateStack","pendingClip","pendingEOFill","xobjs","groupStack","processingType3","baseTransform","baseTransformStack","groupLevel","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","markedContentStack","cachedCanvases","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedGetSinglePixelWidth","_ref2$transparency","_ref2$background","fillRect","transparentCanvas","getCanvas","compositeCtx","_combinedScaleFactor","hypot","beginLayout","executionStartIdx","continueCallback","argsArrayLen","fnId","chunkOperations","endTime","steps","breakIt","depObjId","objsPool","endLayout","img","inverseTransform","tmpCanvas","tmpCtx","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","clearRect","isPatternFill","maskCanvas","objToCanvas","maskToCanvas","cord1","cord2","drawnWidth","drawnHeight","fillCanvas","fillCtx","scaled","_scaleImage","mozCurrentTransformInverse","imageSmoothingEnabled","inverse","getPattern","dashArray","dashPhase","flatness","states","checkSMaskState","inSMaskMode","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","__originalResetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","beginPath","cp1x","cp1y","cp2x","cp2y","mirrorContextOperations","dirtyBox","ops","startX","startY","xw","yh","updateCurvePathMinMax","setCurrentPoint","consumePath","getSinglePixelWidth","_lineWidth","getClippedPathBoundingBox","needRestore","paths","pendingTextPaths","addToPath","spacing","fontRefName","fontObj","fontDirection","isType3Font","bold","italic","typeface","fallbackName","browserFontSize","rise","patternTransform","resetLineWidthToOne","fillStrokeMode","isAddToPathSet","getPathGenerator","strokeText","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","glyph","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","remeasure","measuredWidth","measureText","isFontSubpixelAAEnabled","characterScaleX","isInFont","paintChar","scaledAccentX","scaledAccentY","spacingLength","charProcOperatorList","operatorListId","xWidth","yWidth","llx","lly","urx","ury","IR","color","canvasGraphicsFactory","createCanvasGraphics","TilingPattern","_getPattern","getColorN_Pattern","makeHexColor","matrix","getShadingPattern","SHADING","inv","bl","br","ul","ur","bbox","group","currentCtx","isolated","knockout","currentTransform","getAxialAlignedBoundingBox","canvasBounds","scaleX","scaleY","groupCtx","startTransformInverse","_this$groupStack$pop","currentMtx","hasOwnCanvas","_Util$singularValueDe2","canvasWidth","canvasHeight","annotationCanvas","_this$annotationCanva","savedCtx","compiled","j0","POINT_TYPES","width1","points","lineSize","data0","sum","Int32Array","outlines","coords","p0","pp","kk","ll","compileType3Glyph","_createMaskCanvas","positions","trans","_Util$applyTransform4","images","image","imgToPaint","HTMLElement","getCanvasPosition","appendImage","visible","isVisible","isContentVisible","updateClipFromPath","absDet","sqNorm1","sqNorm2","pixelHeight","EPSILON","op","RadialAxialShadingPattern","MeshShadingPattern","DummyShadingPattern","applyBoundingBox","Path2D","region","BaseShadingPattern","_BaseShadingPattern","_type","_bbox","_colorStops","_p0","_p1","_r0","_r1","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","ownerBBox","_createGradient","createPattern","domMatrix","drawTriangle","c1","c2","c3","colors","rowSize","xa","car","cag","cab","xb","cbr","cbg","cbb","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","_BaseShadingPattern2","_coords","_colors","_figures","_bounds","_background","combinedScale","backgroundColor","boundsWidth","boundsHeight","paddedWidth","BORDER_SIZE","paddedHeight","matrixScale","temporaryPatternCanvas","_createMeshCanvas","_BaseShadingPattern3","PaintType","xstep","ystep","paintType","tilingType","curMatrixScale","dimx","getSizeAndScale","dimy","graphics","setFillAndStrokeStyleToContext","adjustedX0","adjustedY0","adjustedX1","adjustedY1","clipBbox","realOutputSize","maxSize","MAX_PATTERN_SIZE","bboxWidth","bboxHeight","cssColor","createPatternCanvas","CallbackKind","StreamKind","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","_processStreamMessage","cbSourceName","cbTargetName","_createStreamSink","actionName","ah","queueingStrategy","startCapability","startCall","pullCall","cancelCall","isClosed","pullCapability","cancelCapability","streamSink","isCancelled","lastDesiredSize","sinkCapability","success","streamController","_deleteStreamController","_deleteStreamController2","_metadataMap","parsedData","rawData","_classPrivateFieldGet2","OptionalContentGroup","creator","_order","_groups","order","groups","_group","baseState","operator","_evaluateVisibilityExpression","expression","policy","ids","_id","_id2","_id3","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","addRangeListener","_onReceiveData","addProgressListener","_onProgress","addProgressiveReadListener","addProgressiveDoneListener","_onProgressiveDone","transportReady","_enqueue","found","_begin","_this$_fullRequestRea","_this$_fullRequestRea2","_loaded","firstReader","queuedChunks","PDFDataTransportStreamReader","_progressiveDataLength","PDFDataTransportStreamRangeReader","requestDataRange","_stream","_done","_filename","_requests","_headersReady","_read","requestCapability","_end","_queuedChunk","_removeRangeReader","_read2","walk","_node$attributes","shouldBuildText","AnnotationLayer","_scripting_utils","_xfa_layer","_classStaticPrivateMethodGet","classConstructor","_classCheckPrivateStaticAccess","_get","_superPropBase","DEFAULT_TAB_INDEX","GetElementsByNameSet","AnnotationElementFactory","parameters","annotationType","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","_ref$isRenderable","isRenderable","_ref$ignoreBorder","ignoreBorder","_ref$createQuadrilate","createQuadrilaterals","layer","linkService","downloadManager","imageResourcesPath","renderForms","svgFactory","enableScripting","_fieldObjects","fieldObjects","_mouseState","mouseState","_createContainer","quadrilaterals","_createQuadrilaterals","transformOrigin","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","quadPoints","savedRect","quadPoint","trigger","popup","PopupElement","modificationDate","richText","hideWrapper","skipId","fields","fieldObj","_step3$value","exportValues","exportValue","domElement","getElementById","getElementsByName","_domElement","_exportValue","platform","isWin","isMac","_AnnotationElement","isTooltipOnly","resetForm","Action","_linkService$addLinkA","newWindow","_bindNamedAction","_bindLink","hasClickAction","_bindJSAction","_bindResetFormAction","_renderQuadrilaterals","quadrilateral","linkElement","cloneNode","getDestinationHash","goToDestination","getAnchorUrl","executeNamedAction","_Object$keys","jsName","_this3$linkService$ev","eventBus","detail","otherClickAction","resetFormFields","resetFormRefs","refs","include","allFields","fieldIds","fieldName","_Object$values","_i4","_Object$values2","_fields2","_this4$linkService$ev","storage","allIds","_i5","_allFields","_field","setValue","valueAsString","_value2","Event","_AnnotationElement2","_parameters$data$titl","_parameters$data$cont","_parameters$data$rich","hasPopup","alt","dataset","l10nId","l10nArgs","_createPopup","_AnnotationElement3","alternativeText","_AnnotationElement$pl","baseName","valueGetter","_this5$linkService$ev","modifier","_getKeyModifier","_this5$linkService$ev2","_this$data$actions","_setEventListener","jsEvent","setColor","styleName","ColorConverters","commonActions","hidden","print","focus","preventScroll","userName","readonly","removeAttribute","bgColor","fgColor","textColor","_i6","_Object$keys2","_WidgetAnnotationElem","hasAppearance","fieldValue","keyInStorage","_getElementsByName","storedData","elementData","userValue","formattedValue","beforeInputSelectionRange","beforeInputValue","multiLine","setPropertyOnSiblings","defaultFieldValue","blurListener","scrollLeft","_this$data$actions2","activeElement","selRange","_event$detail$selRang","selStart","selEnd","setSelectionRange","_dispatchEventFromSandbox","_this7$linkService$ev","commitKey","willCommit","selectionStart","selectionEnd","_blurListener","_this7$linkService$ev2","isDown","Keystroke","_this7$linkService$ev3","_elementData$beforeIn","change","_setEventListeners","maxLen","maxLength","comb","combWidth","classList","letterSpacing","verticalAlign","_setTextStyle","_setBackgroundColor","_this$data$defaultApp","defaultAppearanceData","fontColor","textAlignment","textAlign","_WidgetAnnotationElem2","_event$target","checkbox","curChecked","_WidgetAnnotationElem3","buttonValue","_event$target2","radio","pdfButtonValue","_LinkAnnotationElemen","_WidgetAnnotationElem4","_super8","fontSizeStyle","selectElement","combo","multiSelect","multiple","option","selected","optionElement","displayValue","isExport","selectedIndex","getItems","multipleSelection","findIndex","_event$detail$insert","insertBefore","indices","_step17","_iterator17","editable","_this10$linkService$e","changeEx","keyDown","_AnnotationElement4","_super9","_parameters$data$titl2","_parameters$data$cont2","_parameters$data$rich2","parentType","parentId","parentElements","parentRect","popupLeft","popupTop","pinned","_this$richText","_this$contentsObj","hideElement","dateObject","toDateObject","toLocaleDateString","toLocaleTimeString","contents","_formatContents","XfaLayer","xfaHtml","lastChild","_step18","_iterator18","_toggle","_show","_hide","lines","line","zIndex","_AnnotationElement5","_super10","_parameters$data$titl3","_parameters$data$cont3","_parameters$data$rich3","_AnnotationElement6","_super11","_parameters$data$titl4","_parameters$data$cont4","_parameters$data$rich4","lineCoordinates","append","_AnnotationElement7","_super12","_parameters$data$titl5","_parameters$data$cont5","_parameters$data$rich5","square","_AnnotationElement8","_super13","_parameters$data$titl6","_parameters$data$cont6","_parameters$data$rich6","circle","_AnnotationElement9","_super14","_parameters$data$titl7","_parameters$data$cont7","_parameters$data$rich7","containerClassName","svgElementName","_step19","_iterator19","vertices","coordinate","polyline","_PolylineAnnotationEl","_super15","_AnnotationElement10","_super16","_parameters$data$titl8","_parameters$data$cont8","_parameters$data$rich8","_AnnotationElement11","_super17","_parameters$data$titl9","_parameters$data$cont9","_parameters$data$rich9","_step20","_iterator20","inkLists","_step21","inkList","_iterator21","_AnnotationElement12","_super18","_parameters$data$titl10","_parameters$data$cont10","_parameters$data$rich10","_AnnotationElement13","_super19","_parameters$data$titl11","_parameters$data$cont11","_parameters$data$rich11","_AnnotationElement14","_super20","_parameters$data$titl12","_parameters$data$cont12","_parameters$data$rich12","_AnnotationElement15","_super21","_parameters$data$titl13","_parameters$data$cont13","_parameters$data$rich13","_AnnotationElement16","_super22","_parameters$data$titl14","_parameters$data$cont14","_parameters$data$rich14","_AnnotationElement17","_super23","_this14$linkService$e","_this14$data$file","file","_this$data$titleObj","_this$data$contentsOb","_download","_this$downloadManager","openOrDownloadData","_step22","sortedAnnotations","popupAnnotations","_iterator22","_i7","_sortedAnnotations","rendered","_step23","_iterator23","renderedElement","prepend","_setAnnotationCanvasMap","ownMatrix","_step24","_iterator24","_step25","_iterator25","ownTransform","_step26","_iterator26","_step26$value","firstChild","nodeName","replaceChild","makeColorComp","G","R","B","RGB_HTML","CMYK_RGB","xfaOn","xfaOff","_ref$storage","isHTMLAnchorElement","HTMLAnchorElement","dataId","setupStorage","root","rootHtml","setAttributes","rootDiv","textDivs","_child$attributes","_stack","childHtml","xmlns","_node","renderTextLayer","renderParameters","TextLayerRenderTask","textContentStream","textContentItemsStr","enhanceTextSelection","_render","timeout","DEFAULT_FONT_SIZE","DEFAULT_FONT_ASCENT","ascentCache","AllWhitespaceRegexp","appendText","geom","textDiv","textDivProperties","_enhanceTextSelection","hasText","hasEOL","originalTransform","paddingBottom","paddingLeft","paddingRight","paddingTop","_textDivs","tx","_viewport","atan2","fontName","fontHeight","fontAscent","cachedAscent","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","pixels","_ratio","getAscent","_fontInspectorEnabled","shouldScaleText","absScaleX","absScaleY","_textDivProperties","_textContentStream","_layoutText","angleCos","angleSin","divWidth","divHeight","right","bottom","_canceled","textDivsLength","_renderingDone","findPositiveMin","ts","expand","expanded","boxes","x1New","x2New","expandBoundsLTR","_b","expandBounds","divProperties","jj","boxScale","horizon","boundary","_horizonPart","_affectedBoundary","maxXNew","xNew","changedHorizon","lastBoundary","useBoundary","used","_horizon","affectedBoundary","_textContent","_container","_textContentItemsStr","_layoutTextLastFontSize","_layoutTextLastFontFamily","_layoutTextCtx","_renderTimer","styleCache","_textDiv$style","mozOpaque","textItems","textStyles","_processItems","expandDivs","transformBuf","paddingBuf","divProps","padding","SVGGraphics","pf","pm","acos","SVG_DEFAULTS","fontStyle","convertImgDataToPng","PNG_HEADER","crcTable","writePngChunk","crc","crc32","deflateSyncUncompressed","literals","maxBlockLength","deflateBlocks","idat","pi","adler","adler32","encode","isMask","bitDepth","colorType","offsetLiterals","offsetBytes","_y","ihdr","deflateSync","pngLength","CHUNK_WRAPPER_SIZE","SVGExtraState","activeClipUrl","clipGroup","maskId","clipCount","maskCount","shadingCount","transformMatrix","transformStack","extraStack","embedFonts","embeddedFonts","cssStyle","_operatorIdMapping","tgrp","executeOpTree","svgElement","loadDependencies","convertOpList","operatorIdMapping","opList","opTree","opListElement","opListToTree","opTreeElement","lineMatrix","xcoords","ycoords","tspan","setAttributeNS","txtElement","txtgrp","lineWidthScale","_setStrokeAttributes","_ensureTransformGroup","defs","addFontStyle","_current$txtElement","hasChildNodes","_makeColorN_Pattern","_makeShadingPattern","_makeTilingPattern","_args$","tilingId","_Util$normalizeRect2","tx0","ty0","tx1","ty1","txstep","tystep","tiling","childNodes","gradient","shadingId","colorStops","point0","point1","focalPoint","circlePoint","focalRadius","circleRadius","getAttributeNS","clipId","clipPath","clipElement","setStrokeAlpha","setFillAlpha","imgSrc","cliprect","imgEl","definitions","rootGroup","_ensureClipGroup","PDFNodeStream","_network_utils","fs","http","https","fileUriRegex","sourceUrl","parsedUrl","parseUrl","isHttp","isFsUrl","_rangeRequestReaders","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_url","_disableRange","_rangeChunkSize","_readableStream","_readCapability","_headersCapability","_error","BaseRangeReader","createRequestOptions","headers","auth","hostname","_BaseFullReader","handleResponse","statusCode","_setReadableStream","getResponseHeader","_validateRangeRequest","validateRangeRequestCapabilities","allowRangeRequests","suggestedLength","extractFilenameFromHeader","_request","_BaseRangeReader","_httpHeaders","Range","_BaseFullReader2","lstat","createReadStream","_BaseRangeReader2","createResponseStatusError","contentDisposition","_content_disposition","getFilenameFromContentDispositionHeader","returnValues","validateResponseStatus","needsEncodingFixup","toParamRegExp","rfc2616unquote","fixupEncoding","rfc2047decode","rfc5987decode","contentDispositionStr","_match2","quot","_n2","_matches$_n","_quot","_part","rfc2231getparam","_filename2","attributePattern","textdecode","encoding","decoder","TextDecoder","fatal","quotindex","extvalue","encodingend","charset","hex","PDFNetworkStream","NetworkManager","getXhr","currXhrId","pendingRequests","xhr","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onprogress","onHeadersReceived","onDone","_pendingRequest$onPro","_pendingRequest$onErr","xhrStatus","getArrayBuffer","rangeHeader","_pendingRequest$onErr3","_pendingRequest$onErr2","_source","_manager","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","_onRangeRequestReaderClosed","manager","_onHeadersReceived","_onDone","_onError","_fullRequestId","requestFull","_headersReceivedCapability","_cachedChunks","fullRequestXhrId","fullRequestXhr","getRequestXhr","_this$onProgress","lengthComputable","isPendingRequest","_requestId","requestRange","_this$onClosed","_close","_this$onProgress2","PDFFetchStream","createFetchOptions","abortController","credentials","redirect","createHeaders","Headers","PDFFetchStreamReader","PDFFetchStreamRangeReader","_withCredentials","_headers","_yield$this$_reader$r","_yield$this$_reader$r2","__webpack_module_cache__","moduleId","cachedModule","__webpack_exports__","_annotation_layer","_api","_svg","_text_layer","startOfUTCWeek","dirtyDate","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","weekStartsOn","_inheritsLoose","startOfUTCISOWeek","DEFAULT_NAMESPACE","ACTION_TYPE_DELIMITER","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","enumerableOnly","symbols","_objectSpread","getOwnPropertyDescriptors","i18nInstance","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","I18nContext","getDefaults","ReportNamespaces","usedNamespaces","namespaces","ns","getI18n","initReactI18next","setDefaults","react","setI18n","_console","alreadyWarned","warnOnce","loadNamespaces","i18n","cb","isInitialized","initialized","hasLoadedNamespace","languages","ignoreJSONStructure","precheck","loadNotPending","services","backendConnector","backend","isLanguageChangingTo","lng","fallbackLng","lastLng","loadState","hasResourceBundle","resources","partialBundledLanguages","oldI18nextHasLoadedNamespace","core","__e","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","argIndex","framesToPop","getTimezoneOffsetInMilliseconds","utcDate","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","stubbedPublicClientApplication","initialize","acquireTokenPopup","acquireTokenRedirect","acquireTokenSilent","acquireTokenByCode","getAllAccounts","getAccountByHomeId","getAccountByUsername","getAccountByLocalId","handleRedirectPromise","loginPopup","loginRedirect","logout","logoutRedirect","logoutPopup","ssoSilent","addEventCallback","removeEventCallback","addPerformanceCallback","removePerformanceCallback","enableAccountStorageEvents","disableAccountStorageEvents","getTokenCache","getLogger","setLogger","setActiveAccount","getActiveAccount","initializeWrapperLibrary","setNavigationClient","getConfiguration","getInteractionStatusFromEvent","currentStatus","eventType","LOGIN_START","Login","SSO_SILENT_START","SsoSilent","ACQUIRE_TOKEN_START","interactionType","Popup","AcquireToken","HANDLE_REDIRECT_START","HandleRedirect","LOGOUT_START","Logout","SSO_SILENT_SUCCESS","SSO_SILENT_FAILURE","None","LOGOUT_END","HANDLE_REDIRECT_END","LOGIN_SUCCESS","LOGIN_FAILURE","ACQUIRE_TOKEN_SUCCESS","ACQUIRE_TOKEN_FAILURE","RESTORE_FROM_BFCACHE","defaultMsalContext","inProgress","accounts","logger","Logger","MsalContext","accountArraysAreEqual","arrayA","arrayB","comparisonArray","elementA","elementB","localAccountId","username","getAccountByIdentifiers","allAccounts","accountIdentifiers","accountObj","MsalProviderActionType","reducer","newInProgress","UNBLOCK_INPROGRESS","Startup","EVENT","EventMessageUtils","currentAccounts","MsalProvider","updateState","verbose","catch","finally","useMsal","isAuthenticated","matchAccount","useIsAuthenticated","hasAuthenticated","setHasAuthenticated","useState","getAccount","ReactAuthErrorMessage","ReactAuthError","super","createInvalidInteractionTypeError","createUnableToFallbackToInteractionError","useMsalAuthentication","authenticationRequest","account","setAccount","currentAccount","nextAccount","AccountEntity","accountInfoIsEqual","useAccount","setResponse","mounted","interactionInProgress","shouldAcquireToken","login","useCallback","callbackInteractionType","callbackRequest","loginRequest","Silent","acquireToken","fallbackInteractionType","tokenRequest","trace","InteractionRequiredAuthError","getToken","InteractionRequiredServerErrorMessage","InteractionRequiredAuthSubErrorMessage","InteractionRequiredAuthErrorMessage","native_account_unavailable","timestamp","traceId","claims","isInteractionRequiredError","isInteractionRequiredErrorCode","isInteractionRequiredSubError","isInteractionRequiredErrorDesc","irErrorCode","createNoTokensFoundError","createNativeAccountUnavailableError","window$1","Config","DEBUG","LIB_VERSION","referrer","screen","ArrayProto","FuncProto","ObjProto","windowConsole","document$1","windowOpera","opera","nativeBind","nativeForEach","nativeIndexOf","nativeMap","nativeIsArray","breaker","each","critical","log_func_with_prefix","console_with_prefix","bound","isArguments","needle","inherit","subclass","superclass","isEmptyObject","isElement","nodeType","encodeDates","formatDate","pad","strip_empty_properties","truncate","JSONEncode","mixed_val","quote","escapable","holder","gap","mind","partial","JSONDecode","at","escapee","SyntaxError","uffff","word","base64Encode","h1","h2","h3","h4","bits","b64","enc","tmp_arr","utf8Encode","stringl","utftext","UUID","T","ticks","performance","se","xor","byte_array","UA","BLOCKED_UA_STRS","isBlockedUA","HTTPBuildQuery","formdata","arg_separator","use_val","use_key","getQueryParam","param","cookie","nameEQ","ca","set_seconds","is_cross_subdomain","is_secure","is_cross_site","domain_override","cdomain","expires","secure","extract_domain","toGMTString","new_cookie_val","_localStorageSupported","localStorageSupported","forceCheck","localStorage","cheap_guid","setItem","getItem","removeItem","is_supported","force_check","register_event","fixEvent","returnValue","cancelBubble","oldSchool","useCapture","ontype","old_handler","new_handler","old_handlers","old_result","new_result","makeHandler","TOKEN_MATCH_REGEX","dom_query","getAllChildren","bad_whitespace","hasClass","getElementsBySelector","foundCount","currentContextIndex","currentContext","token_match","checkFunction","attrName","attrOperator","attrValue","CAMPAIGN_KEYWORDS","CLICK_IDS","campaignParams","default_value","kw","kwkey","clickParams","idkey","marketingParams","searchEngine","searchInfo","keyword","browser","user_agent","vendor","browserVersion","os","device","referringDomain","currentUrl","extra_props","people_properties","mpPageViewProperties","maxlen","guid","SIMPLE_DOMAIN_MATCH_REGEX","DOMAIN_MATCH_REGEX","domain_regex","tld","JSONStringify","JSONParse","DomTracker","create_properties","event_handler","after_track_handler","mixpanel_instance","mp","track","event_name","user_callback","override_event","get_config","track_callback","timeout_occured","callback_fired","LinkTracker","new_tab","which","FormTracker","submit","logger$2","SharedLock","storageKey","pollIntervalMS","timeoutMS","withLock","lockedCB","errorCB","pid","startTime","keyX","keyY","keyZ","reportError","waitFor","getSetY","valY","criticalSection","logger$1","RequestQueue","errorReporter","lock","memQueue","flushInterval","queueEntry","succeeded","storedQueue","readFromStorage","saveToStorage","fillBatch","batchSize","idsInBatch","orphaned","filterOutIDsAndInvalid","idSet","filteredItems","removeItemsByID","removeFromStorage","updatePayloads","existingItems","itemsToUpdate","newItems","newPayload","storageEntry","RequestBatcher","libConfig","sendRequest","sendRequestFunc","beforeSendHook","stopAllBatching","stopAllBatchingFunc","consecutiveRemovalFailures","itemIdsSentSuccessfully","timeoutID","resetBatchSize","resetFlush","scheduleFlush","flushMS","requestInProgress","currentBatchSize","dataForRequest","transformedItems","addPayload","itemId","timesSent","batchSendCallback","removeItemsFromQueue","unloading","xhr_req","retryMS","retryAfter","halvedBatchSize","requestOptions","ignore_json_errors","timeout_ms","GDPR_DEFAULT_PERSISTENCE_PREFIX","optIn","_optInOut","optOut","hasOptedIn","_getStorageValue","hasOptedOut","ignoreDnt","win","nav","hasDntOn","dntValue","_hasDoNotTrackFlagOn","optedOut","addOptOutCheckMixpanelLib","_addOptOutCheck","addOptOutCheckMixpanelPeople","_get_config","addOptOutCheckMixpanelGroup","clearOptInOut","_getStorage","_getStorageKey","crossSubdomainCookie","cookieDomain","persistenceType","persistencePrefix","optValue","cookieExpiration","secureCookie","crossSiteCookie","trackEventName","trackProperties","getConfigValue","SET_ACTION","SET_ONCE_ACTION","UNSET_ACTION","ADD_ACTION","APPEND_ACTION","UNION_ACTION","REMOVE_ACTION","apiActions","set_action","$set","_is_reserved_property","unset_action","$unset","set_once_action","$set_once","union_action","list_name","$union","append_action","$append","remove_action","$remove","delete_action","MixpanelGroup","_init","group_key","group_id","_mixpanel","_group_key","_group_id","_send_request","set_once","unset","union","date_encoded_data","_track_or_batch","batcher","request_batchers","conf","MixpanelPeople","update_referrer_info","increment","by","$add","track_charge","amount","clear_charges","delete_user","_identify_called","get_distinct_id","device_id","get_property","user_id","had_persisted_distinct_id","people","conf_var","_flags","identify_called","_add_to_people_queue","_flush_one_queue","action_method","queue_to_params_fn","queued_data","load_queue","action_params","_pop_from_people_queue","_flush","_set_callback","_add_callback","_append_callback","_set_once_callback","_union_callback","_unset_callback","_remove_callback","$append_queue","$append_item","append_callback","$remove_queue","$remove_item","remove_callback","init_type","mixpanel_master","SET_QUEUE_KEY","SET_ONCE_QUEUE_KEY","UNSET_QUEUE_KEY","ADD_QUEUE_KEY","APPEND_QUEUE_KEY","REMOVE_QUEUE_KEY","UNION_QUEUE_KEY","PEOPLE_DISTINCT_ID_KEY","ALIAS_ID_KEY","EVENT_TIMERS_KEY","RESERVED_PROPERTIES","MixpanelPersistence","campaign_params_saved","storage_type","load","update_config","upgrade","old_cookie_name","old_cookie","upgrade_from_old_lib","register_once","expire_days","cross_subdomain","cross_site","cookie_domain","load_prop","default_expiry","register","unregister","update_search_keyword","get_referrer_info","set_disabled","set_cookie_domain","set_cross_site","set_cross_subdomain","set_secure","get_cross_subdomain","q_key","_get_queue_key","q_data","set_q","_get_or_create_queue","set_once_q","unset_q","add_q","union_q","remove_q","append_q","enqueued_obj","append_obj","queued_action","default_val","set_event_timer","timers","remove_event_timer","IDENTITY_FUNC","NOOP_FUNC","PRIMARY_INSTANCE_NAME","PAYLOAD_TYPE_BASE64","DEVICE_ID_PREFIX","USE_XHR","ENQUEUE_REQUESTS","sendBeacon","DEFAULT_API_ROUTES","DEFAULT_CONFIG","DOM_LOADED","MixpanelLib","create_mplib","_cached_groups","utm_params","initial_utm_params","has_utm","utm_value","utm_key","_execute_array","report_error","variable_features","set_config","__dom_loaded_queue","__request_queue","__disabled_events","_batch_requests","init_batchers","flush_on_unload","events","ev","get_batcher_configs","batcher_config","queue_key","unpersisted_superprops","_gdpr_init","uuid","track_pageview_option","_init_url_change_tracking","_set_default_superprops","_utm_value","_dom_loaded","_track_dom","has_opted_out_tracking","DomClass","dt","previous_tracked_url","track_pageview","nativePushState","unused","nativeReplaceState","current_url","should_track","_prepare_callback","jsc","randomized_cb","callback_string","DEFAULT_OPTIONS","body_data","use_post","use_sendBeacon","verbose_mode","lib","req","headerValue","headerName","start_time","fn_name","alias_calls","other_calls","tracking_calls","execute","calls","caller","are_batchers_initialized","queue_prefix","api_routes","_batcher_configs","batcher_for","attrs","_encode_data_for_request","_run_hook","stop_batch_senders","batcher_configs","start_batch_senders","_batchers_were_started","disable","disable_all_events","encoded_data","truncated_data","should_send_immediately","send_request_options","request_enqueued_or_initiated","send_request_immediately","skip_hooks","_event_is_disabled","start_timestamp","duration_in_ms","marketing_properties","property_blacklist","blacklisted_prop","set_group","group_ids","add_group","old_values","remove_group","old_value","track_with_groups","tracking_props","_create_map_key","_remove_group_from_cache","get_group","map_key","default_page_properties","event_properties","track_links","track_forms","time_event","REGISTER_DEFAULTS","options_for_register","days_or_options","_register_single","identify","new_distinct_id","previous_distinct_id","name_tag","prop_name","hook_name","property_name","has_opted_in_tracking","opt_in_tracking","opt_out_tracking","clear_opt_in_out_tracking","_gdpr_update_persistence","_gdpr_call_func","instances","override_mp_init_func","mixpanel","dom_loaded_handler","inst","attachEvent","toplevel","frameElement","doScroll","do_scroll_check","add_dom_loaded_handler","millisecondsInMinute","millisecondsInHour","millisecondsInSecond","__g","hide","$export","own","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","IS_WRAP","expProto","virtual","dP","objectTypes","freeExports","freeModule","freeGlobal","maxSafeInteger","reOpera","objectProto","capitalize","forOwn","getClassOf","qualify","accumulator","isCustomContext","isSpecialCasedOS","likeChrome","objectClass","airRuntimeClass","enviroClass","javaClass","java","phantomClass","rhino","environment","beta","operamini","operaClass","arch","prerelease","useFeatures","layout","guess","guesses","getName","product","getProduct","manufacturer","getManufacturer","cleanupOS","getOS","getVersion","patterns","isHostType","System","getProperty","system","flash","Capabilities","phantom","major","minor","patch","documentMode","appMinorVersion","external","architecture","cpuClass","startOfDay","modules","installedModules","__webpack_require__","_react","_reactRouterDom","initState","nextLocation","NavigationPrompt","_prevUserAction","onBeforeUnload","onConfirm","disableNative","prevState","afterCancel","afterConfirm","allowGoBack","beforeCancel","beforeConfirm","navigateToNextLocation","renderIfNotActive","generateAccountId","CACHE_KEY_SEPARATOR","generateAccountKey","generateAccountCacheKey","tenantId","realm","generateType","authorityType","ADFS_ACCOUNT_TYPE","MSAV1_ACCOUNT_TYPE","MSA","MSSTS_ACCOUNT_TYPE","MSSTS","GENERIC_ACCOUNT_TYPE","GENERIC","getAccountInfo","idTokenClaims","nativeAccountId","accountInterface","createAccount","clientInfo","idToken","authority","cloudGraphHostName","msGraphHost","env","getPreferredCache","tid","oid","sub","preferredUsername","preferred_username","email","emails","createGenericAccount","Adfs","upn","serverClientInfo","authType","cryptoObj","accountId","Dsts","entity","accountA","accountB","compareClaims","claimsMatch","accountAClaims","accountBClaims","iat","nonce","createDesc","IObject","defined","USE_SYMBOL","isMap","addMilliseconds","dirtyAmount","getUTCWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","startOfWeek","$Error","$EvalError","$RangeError","$ReferenceError","$SyntaxError","$TypeError","$URIError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","hasProto","needsEval","TypedArray","INTRINSICS","Atomics","BigInt","BigInt64Array","BigUint64Array","encodeURI","FinalizationRegistry","Int8Array","Int16Array","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","WeakRef","errorProto","doEval","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","getBaseIntrinsic","allowMissing","intrinsicName","subString","stringToPath","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","toStr","defineDataProperty","supportsDescriptors","predicates","addDays","addMonths","dayOfMonth","endOfDesiredMonth","LogLevel","loggerOptions","packageName","packageVersion","Info","setLoggerOptions","createDefaultLoggerOptions","localCallback","loggerCallback","piiLoggingEnabled","logLevel","logMessage","containsPii","toUTCString","executeCallback","errorPii","Warning","warningPii","infoPii","Verbose","verbosePii","Trace","tracePii","isPiiLoggingEnabled","reactIs","REACT_STATICS","contextType","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","KNOWN_STATICS","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","DEVICE_SIZES","noGutters","decoratedBsPrefix","sizePrefix","brkPoint","propValue","infix","spans","_propValue$span","dateLongFormatter","formatLong","timeLongFormatter","longFormatters","dateTimeFormat","matchResult","datePattern","timePattern","dateTime","_objectSpread2","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","createStore","preloadedState","enhancer","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observer","observeState","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","applyMiddleware","middlewares","_dispatch","middlewareAPI","middleware","$keys","px","timeoutId","InvalidTokenError","base64UrlDecode","b64DecodeUnicode","jwtDecode","decoded","partialFlatMap","partialFlatActionType","_ref$namespace","nextNamespace","connectPrefix","types","partials","connectNamespace","mapValue","subMilliseconds","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","fourthOfJanuaryOfThisYear","startOfQuarter","currentMonth","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","tokenValue","addSuffix","comparison","buildFormatLongFn","defaultWidth","full","long","medium","short","formatRelativeLocale","yesterday","today","tomorrow","formatRelative","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","localize","ordinalNumber","rem100","abbreviated","wide","dayPeriod","am","midnight","noon","morning","afternoon","evening","night","buildMatchFn","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","findKey","valueCallback","parsePattern","parseResult","defaultLocale","MILLISECONDS_IN_WEEK","getUTCWeek","firstWeek","startOfUTCWeekYear","getUTCISOWeek","fourthOfJanuary","startOfUTCISOWeekYear","InputGroupAppend","InputGroupPrepend","InputGroupText","InputGroup","hasValidation","Radio","Checkbox","Append","Prepend","webpackPolyfill","dPs","Empty","createDict","lt","def","LIBRARY","wksExt","implementation","GetIntrinsic","setFunctionLength","$apply","$call","$reflectApply","$max","originalFunction","applyBind","gopd","nonEnumerable","nonWritable","nonConfigurable","loose","hasPropertyDescriptors","hasArrayLengthDefineBug","validators","_createChainableTypeChecker2","validator","_createChainableTypeChecker","MILLISECONDS_IN_MINUTE","addMinutes","MILLISECONDS_IN_HOUR","addHours","addWeeks","addYears","dirtyMonth","dateWithDesiredMonth","monthIndex","lastDayOfMonth","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","INFINITY","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeSelf","moduleExports","freeProcess","nodeUtil","binding","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","thisArg","arrayAggregator","iteratee","arrayEach","arrayEachRight","arrayEvery","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","hasUnicode","mapToArray","overArg","replaceHolders","placeholder","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","pick","arrayProto","funcProto","coreJsData","funcToString","idCounter","maskSrcKey","nativeObjectToString","objectCtorString","oldDash","reIsNative","allocUnsafe","getPrototype","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","skip","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","cloneDataView","cloneTypedArray","cloneRegExp","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFilter","baseFlatten","depth","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","unmasked","getRawTag","objectToString","baseGt","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","seen","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","othProps","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","isArrayLikeObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","comparer","baseSortBy","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","castRest","castSlice","copy","typedArray","valIsDefined","valIsReflexive","composeArgs","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","createCaseFirst","trailing","createCompounder","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","prereq","thru","getFuncName","funcName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","createOver","arrayFunc","createPadding","charsLength","createRange","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","otherFunc","isKeyable","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","shortOut","reference","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","memoize","memoizeCapped","difference","differenceBy","differenceWith","findLastIndex","intersection","mapped","intersectionBy","intersectionWith","pullAll","pullAt","unionBy","unionWith","unzip","unzipWith","without","xorBy","xorWith","zip","zipWith","interceptor","wrapperAt","countBy","find","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bindKey","WRAP_BIND_FLAG","debounce","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partialRight","rearg","gt","gte","lte","iteratorToArray","isBinary","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","merge","omit","CLONE_DEEP_FLAG","basePick","toPairs","toPairsIn","camelCase","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","divide","multiplier","multiplicand","minuend","subtrahend","after","castArray","compact","conforms","baseConforms","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","baseFill","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","mapKeys","mapValues","matchesProperty","nthArg","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","spread","tail","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","update","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","escapeRegExp","findLastKey","forIn","forInRight","forOwnRight","inRange","baseInRange","isBoolean","isEqual","isEqualWith","isMatch","isMatchWith","isNative","isNil","isNull","isSafeInteger","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","strLength","radix","floating","reduceRight","repeat","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","toLower","toSafeInteger","toUpper","trimEnd","trimStart","omission","newEnd","uniqueId","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","getView","iterLength","takeCount","iterIndex","commit","wrapped","space","letter","isarray","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","delimiter","escaped","capture","asterisk","optional","escapeGroup","encodeURIComponentPretty","opts","segment","attachKeys","re","route","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","timeoutDuration","longerTimeoutBrowsers","isBrowser","scheduled","functionToCheck","getStyleComputedProperty","defaultView","getParentNode","getScrollParent","overflowX","overflowY","getReferenceNode","referenceNode","isIE11","MSInputMethodContext","isIE10","isIE","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","setStart","setEnd","commonAncestorContainer","firstElementChild","isOffsetContainer","element1root","getScroll","upperSide","scrollingElement","getBordersSize","sideA","sideB","computedStyle","getWindowSizes","getClientRect","offsets","scrollTop","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","fixedPosition","runIsIE","isHTML","childrenRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","includeScroll","isFixed","getFixedPositionOffsetParent","getBoundaries","popper","boundariesElement","boundaries","excludeScroll","relativeOffset","innerWidth","innerHeight","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","isPaddingNumber","computeAutoPlacement","placement","refRect","rects","sortedAreas","area","filteredAreas","computedPlacement","variation","getReferenceOffsets","getOuterSizes","marginBottom","marginRight","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","modifiers","ends","cur","isDestroyed","positionFixed","originalPlacement","isCreated","onCreate","isModifierEnabled","modifierName","getSupportedPropertyName","upperProp","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","isNumeric","setStyles","isFirefox","isModifierRequired","requestingName","requestedName","requesting","requested","validPlacements","placements","clockwise","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","splitRegex","mergeWithPrevious","toValue","index2","shiftvariation","isVertical","side","shiftOffsets","transformProp","popperStyles","escapeWithReference","opSide","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","arrow","flipped","placementOpposite","flipOrder","behavior","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","subtractLength","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","prefixedProperty","invertTop","invertLeft","arrowStyles","modifierOptions","Popper","Defaults","jquery","onLoad","Utils","PopperUtils","_implementation2","objectWithoutPropertiesLoose","sourceSymbolKeys","_objectWithoutProperties","__spreadArray","pack","ar","keyboardEvents","mouseEvents","touchEvents","allEvents","makeEventProps","getArgs","eventProps","eventHandler","makeCancellablePromise","mergeClassNames","Message","oneOf","LinkService","externalLinkTarget","externalLinkRel","pdfDocument","pdfViewer","currentPageNumber","explicitDest","destRef","pagesCount","scrollPageIntoView","unsupportedIterableToArray","isLocalFileSystem","isDefined","isProvided","isDataURI","dataURItoByteString","dataURI","_dataURI$split2","headersString","dataString","allowFileAccessFromFilesTip","displayCORSWarning","cancelRunningTask","runningTask","makePageCallback","isCancelException","arrayLikeToArray","fileTypes","instanceOf","isClassName","isFile","isLinkService","isPage","getTextContent","getViewport","isPdf","isRef","isRenderMode","isRotate","pdfjs","Document","_PureComponent","pdf","onItemClick","pages","scrollIntoView","cancellable","makeCancellable","findDocumentSource","onSourceSuccess","_this$props","onLoadProgress","fingerprint","onLoadSuccess","onLoadError","onSourceError","_this$props2","setViewer","viewer","setExternalLinkRel","setExternalLinkTarget","setDocument","fileByteString","isBlob","FileReader","NOT_FOUND_ERR","NOT_READABLE_ERR","SECURITY_ERR","ABORT_ERR","readAsArrayBuffer","loadFromFile","otherParams","_fileByteString","loadDocument","setupLinkService","registerPage","unregisterPage","_this$props3","renderMode","DocumentContext","childContext","noData","loading","renderChildren","_this$props4","inputRef","renderContent","PureComponent","isFunctionOrNode","isFileProp","Ref","num","OutlineItemInternal","getPageNumber","otherProps","subitems","subitem","subitemIndex","renderSubitems","isDestination","OutlineItem","documentContext","OutlineContext","outlineContext","OutlineInternal","loadOutline","itemIndex","renderOutline","mergeRefs","inputRefs","filteredInputRefs","ANNOTATION_MODE","PageCanvasInternal","createRef","onRenderSuccess","onRenderError","canvasElement","_assertThisInitialize","renderViewport","canvasBackground","renderContext","cancelRenderingTask","drawPageOnCanvas","pixelRatio","_this$props5","canvasRef","userSelect","PageCanvas","PageContext","PageSVGInternal","getOperatorList","svgGfx","getSVG","_this$viewport","renderSVG","_this$viewport2","drawPageOnContainer","PageSVG","TextLayerItemInternal","sideways","alignTextItem","unrotatedViewport","defaultSideways","_transform","fontHeightPx","fontWidthPx","_transform2","_viewport$viewBox","yMin","yMax","_transform3","xMin","itemElement","getFontData","fontData","fallbackFontName","targetWidth","actualWidth","getElementWidth","WebkitTransform","customTextRenderer","whiteSpace","pointerEvents","TextLayerItem","TextLayerInternal","onGetTextSuccess","onGetTextError","loadTextItems","textItem","renderTextItems","TextLayer","AnnotationLayerInternal","onGetAnnotationsSuccess","onGetAnnotationsError","onRenderAnnotationLayerSuccess","onRenderAnnotationLayerError","loadAnnotations","layerElement","innerHTML","renderAnnotationLayer","pageContext","PageInternal","pageElement","loadPage","pageScale","scaleWithDefault","pageKeyNoScale","pageKey","renderMainLayer","Page","propName","componentName","consoleLogger","concreteLogger","debug","forward","lvl","debugOnly","moduleName","baseLogger","EventEmitter","observers","rej","makeString","getLastOfPath","cleanKey","canNotTraverseDeeper","setPath","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","defaultData","deepExtend","overwrite","_entityMap","ResourceStore","_EventEmitter","defaultNS","keySeparator","silent","addNamespaces","addResource","deep","removeNamespaces","getResource","compatibilityAPI","postProcessor","processors","addPostProcessor","translator","processor","checkedLoadedFor","Translator","language","interpolation","nsSeparator","interpolator","nestingRegexp","lastKey","overloadTranslationOptionHandler","_this$extractFromKey","extractFromKey","appendNamespaceToCIMode","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","isValidLookup","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","saveMissingTo","toResolveHierarchy","fallbackValue","missingKeyHandler","saveMissing","saveMissingPlurals","getSuffixes","appendNamespaceToMissingKey","parseMissingKeyHandler","usedLng","usedNS","skipInterpolation","nestBef","skipOnVariables","nb","defaultVariables","na","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","extracted","fallbackNS","needsContextHandling","codes","utils","pluralSuffix","possibleKey","finalKey","finalKeys","addLookupKeys","contextSeparator","returnNull","returnEmptyString","resourceStore","LanguageUtil","whitelist","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","cleanCode","isSupportedCode","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","lngOnly","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","PluralResolver","numbers","plurals","createRules","getRule","noAbs","simplifyPluralSuffix","returnSuffix","compatibilityJSON","Interpolator","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","missingInterpolationHandler","safeValue","todo","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","formatters","doReduce","Connector","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","addResourceBundle","_getLastOfPath2","pushPath","what","fcName","tried","queueLoad","loadOne","prepareLoading","isUpdate","transformOptions","nonExplicitWhitelist","I18n","isClone","initImmediate","createClassOnDemand","ClassOrObject","preload","pluralSeparator","tDescription","_format","lu","languageDetector","_this2$store","_this2$store2","deferred","changeLanguage","usedCallback","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","detect","fixedT","_this$translator","_this$translator2","exists","preResult","preloaded","newLngs","mergedOptions","i18next","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","argv","addListener","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","aFunction","toIObject","arrayIndexOf","cof","ObjectProto","_symbol2","$iterCreate","BUGGY","Base","DEF_VALUES","VALUES_BUG","$native","$entries","$anyNative","pIE","gOPD","isArgs","origKeys","keysShim","originalKeys","shim","keysWorksWithArguments","symObj","syms","$indexOf","numberIsNaN","setFunctionName","$Object","hasIndices","ignoreCase","multiline","dotAll","unicode","unicodeSets","sticky","createRoot","hydrateRoot","arrayWithHoles","iterableToArrayLimit","nonIterableRest","_toPropertyKey","hint","prim","_toPrimitive","createFocusTrap","FocusTrap","optionName","_this$internalOptions","optionValue","internalOptions","originalOptions","_this$getDocument","handleDeactivate","handlePostDeactivate","handleClickOutsideDeactivates","returnFocusOnDeactivate","checkCanReturnFocus","onDeactivate","onPostDeactivate","clickOutsideDeactivates","focusTrapOptions","outsideClick","focusTrapElements","containerElements","updatePreviousElement","getNodeForOption","previouslyFocusedElement","currentDocument","focusTrap","deactivate","returnFocus","allowDeactivation","deactivateTrap","finishDeactivation","returnFocusNode","getReturnFocusNode","canReturnFocus","tabbableOptions","_this2$internalOption","activate","paused","_createFocusTrap","setupFocusTrap","updateContainerElements","hasActivated","hasDeactivated","hasPaused","hasUnpaused","unpause","only","ElementType","onActivate","onPostActivate","checkCanFocusTrap","onPause","onPostPause","onUnpause","onPostUnpause","initialFocus","fallbackFocus","escapeDeactivates","setReturnFocus","allowOutsideClick","trapStack","isKeyForward","isKeyBackward","lastCallAt","timer","pendingArgs","currentWait","getWait","currentTime","isCold","accumulate","thisDeferred","useConstant","conformToMask","setRef","onBlur","onChange","inputElement","textMaskInputElement","initTextMask","pipe","guide","placeholderChar","showMask","keepCharPositions","strFunction","maskWithoutCaretTraps","convertMaskToPlaceholder","processCaretTraps","previousConformedValue","currentCaretPosition","char","N","A","I","J","H","conformedValue","someCharsRejected","previousPlaceholder","rawValue","indexesOfPipedChars","caretTrapIndexes","rejected","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","objectOf","checkPropTypes","minYear","maxYear","yyyy","HH","SS","ee","te","ae","ne","oe","ie","pe","le","de","ce","ue","fe","he","me","ye","ve","De","we","ke","ge","be","Ce","Se","Me","Pe","Ee","Ne","Oe","Ye","xe","Te","Ie","Le","Fe","Re","qe","Ae","We","Be","je","He","Ke","Qe","Ve","Ue","$e","ze","Ge","Je","Xe","Ze","et","tt","rt","nt","ot","st","pt","ct","ut","ft","ht","yt","vt","Dt","wt","kt","bt","Ct","St","_t","Mt","Pt","Et","Nt","Ot","Yt","xt","It","Tt","Jt","Gt","awareOfUnicodeTokens","Lt","Ft","Rt","qt","At","Wt","Bt","jt","Ht","Kt","Qt","Vt","Ut","$t","zt","__localeId__","__localeData__","Xt","Zt","er","tr","minDate","maxDate","excludeDates","includeDates","filterDate","pr","rr","or","sr","ir","lr","dr","excludeTimes","includeTimes","filterTime","cr","minTime","maxTime","fr","hr","mr","yr","vr","Dr","wr","kr","gr","startPeriod","endPeriod","Cr","yearsList","incrementYears","decrementYears","shiftYears","yearDropdownItemNumber","scrollableYearDropdown","renderOptions","Sr","_r","dropdownVisible","onSelectChange","renderSelectOptions","toggleDropdown","renderReadView","renderDropdown","adjustDateOnChange","handleYearChange","onSelect","setOpen","dropdownMode","renderScrollMode","renderSelectMode","Mr","monthNames","Pr","Er","useShortMonthInDropdown","Nr","Or","monthYearsList","scrollableMonthYearDropdown","Yr","xr","Tr","isDisabled","onMouseEnter","handleOnKeyDown","disabledKeyboardNavigation","isSameDay","preSelection","highlightDates","startDate","endDate","selectsStart","selectsEnd","selectsRange","selectingDate","isInSelectingRange","dayClassName","isExcluded","isKeyboardSelected","isRangeStart","isRangeEnd","isInRange","isSelectingRangeStart","isSelectingRangeEnd","isWeekend","isOutsideMonth","getHighLightedClass","ariaLabelPrefixWhenEnabled","ariaLabelPrefixWhenDisabled","isInputFocused","shouldFocusDayInline","containerRef","dayEl","monthShowsDuplicateDaysEnd","monthShowsDuplicateDaysStart","renderDayContents","getClassNames","handleMouseEnter","getAriaLabel","handleFocusDay","Ir","weekNumber","ariaLabelPrefix","Lr","onDayClick","onDayMouseEnter","onWeekSelect","shouldCloseOnSelect","formatWeekNumber","showWeekNumber","handleWeekClick","chooseDayAriaLabelPrefix","disabledDayAriaLabelPrefix","handleDayClick","handleDayMouseEnter","renderDays","Fr","orderInDisplay","onMouseLeave","fixedHeight","weekAriaLabelPrefix","showWeekNumbers","isWeekInMonth","peekNextMonth","setPreSelection","MONTH_REFS","onMonthClick","handleMonthNavigation","monthClassName","isRangeStartMonth","isRangeEndMonth","isRangeStartQuarter","isRangeEndQuarter","showFullMonthYearPicker","showTwoColumnMonthYearPicker","showFourColumnMonthYearPicker","onMonthKeyDown","getMonthClassNames","onQuarterClick","getQuarterClassNames","showMonthYearPicker","showQuarterYearPicker","handleMouseLeave","renderMonths","renderQuarters","renderWeeks","Rr","timeClassName","injectTimes","intervals","openToDate","liClasses","centerLi","calcCenterPosition","monthRef","todayButton","showTimeSelectOnly","timeCaption","renderTimes","onTimeChange","offsetTop","qr","handleYearClick","yearItemNumber","onYearClick","getYearClassNames","Ar","timeString","customTimeInput","timeInputLabel","renderTimeInput","Wr","showPopperArrow","arrowProps","Br","jr","onClickOutside","onDropdownFocus","handleMonthChange","onMonthMouseLeave","onYearChange","onMonthChange","handleMonthYearChange","weekLabel","formatWeekday","weekDayClassName","formatWeekDay","useWeekdaysShort","showYearPicker","renderCustomHeader","forceShowMonthNavigation","showDisabledMonthNavigation","decreaseMonth","decreaseYear","previousMonthAriaLabel","previousYearAriaLabel","previousYearButtonLabel","previousMonthButtonLabel","showTimeSelect","increaseMonth","increaseYear","nextMonthAriaLabel","nextYearAriaLabel","nextYearButtonLabel","nextMonthButtonLabel","showYearDropdown","showMonthDropdown","showMonthYearDropdown","changeYear","changeMonth","changeMonthYear","monthDate","renderCurrentMonth","onFocus","handleDropdownFocus","renderMonthDropdown","renderMonthYearDropdown","renderYearDropdown","monthContainer","customHeaderCount","prevMonthButtonDisabled","nextMonthButtonDisabled","prevYearButtonDisabled","nextYearButtonDisabled","renderYearHeader","renderDefaultHeader","showPreviousMonths","monthsShown","monthSelectedIn","renderHeader","handleMonthMouseLeave","timeIntervals","withPortal","showTimeInput","getDateInView","assignMonthContainer","renderPreviousButton","renderNextButton","renderYears","renderTodayButton","renderTimeSection","renderInputTimeSection","Hr","Kr","tabLoopRef","getTabChildren","enableTabLoop","handleFocusStart","handleFocusEnd","Qr","portalRoot","portalId","createPortal","Vr","wrapperClassName","hidePopper","popperComponent","popperModifiers","popperPlacement","popperProps","popperOnKeyDown","popperContainer","Manager","Reference","preventOverflow","Ur","$r","zr","Gr","getPreSelection","startOpen","preventFocus","focused","preventFocusTimeout","blur","cancelFocusInput","calcInitialState","lastPreSelectChange","Xr","setBlur","inputValue","preventOpenOnFocus","inputFocusTimeout","setFocus","onChangeRaw","isDefaultPrevented","Jr","strictParsing","setSelected","allowSameDay","focusSelectedMonth","onInputClick","componentNode","inputOk","handleSelect","onInputError","onClearClick","closeOnScroll","isCalendarOpen","dateFormatCalendar","handleCalendarClickOutside","outsideClickIgnoreClass","handleTimeChange","calendarClassName","calendarContainer","excludeScrollbar","onDayKeyDown","customInput","customInputRef","handleBlur","handleChange","handleFocus","onInputKeyDown","autoFocus","placeholderText","autoComplete","ariaDescribedBy","ariaInvalid","ariaLabelledBy","ariaRequired","isClearable","clearButtonTitle","clearButtonClassName","ariaLabelClose","onScroll","onCalendarOpen","onCalendarClose","clearPreventFocusTimeout","renderCalendar","renderDateInput","renderClearButton","popperClassName","onPopperKeyDown","CalendarContainer","getDefaultLocale","registerLocale","setDefaultLocale","isRegex","deepEqual","actual","expected","isUndefinedOrNull","aIsRegex","bIsRegex","aIsBuffer","bIsBuffer","ka","kb","objEquiv","semaphore","suspend","asap","immediately","_predicate","wildcard","matcherCreator","string$1","array$1","symbol$1","END","isEnd","takers","taker","stdChannel","chan","currentTakers","nextTakers","ensureCanMutateNextTakers","multicastChannel","RUNNING","ABORTED","_effectRunnerMap","nextSagaId","cancelSingleTask","taskToCancel","isRunning","effectRunnerMap","_ref3$channel","maybe","takeCb","digestEffect","effectId","childCbs","proc","cpsCb","taskIterator","createTaskIterator","getIteratorMetaInfo","addTask","isAborted","joinSingleTask","taskToJoin","joiner","joiners","CANCEL$1","CANCELLED$1","formatLocation","fileName","lineNumber","sagaLocationAsString","sagaMeta","cancelledTasksAsString","cancelledTasks","crashedEffect","addSagaFrame","frame","setCrashedEffect","firstSaga","otherSagas","crashedEffectLocation","effectLocationAsString","newTask","mainTask","parentContext","parentEffectId","isRoot","cont","_task","taskResult","taskError","deferredEnd","cancelledDueToErrorTasks","onAbort","tasks","cancelAll","getTasks","forkQueue","setContext","toPromise","iterator$1","finalRunEffect","finalizeRunEffect","currCb","effectRunner","executingContext","effectSettled","sagaMonitor","effectRejected","effectResolved","effectTriggered","effectCancelled","runSaga","saga","_ref$channel","_ref$context","effectMiddlewares","_ref$onError","rootSagaStarted","actionDispatched","runEffect","sagaMiddlewareFactory","boundRunSaga","sagaMiddleware","createSagaMiddleware__default","__assign","DefaultOptions","onlyResolvesLast","debounceSingleton","debounceCache","_createDebouncedFunction","debouncedFunc","getDebouncedFunction","finalOptions","extendStatics","restrictPosition","mediaSize","cropSize","zoom","translateSize","restrictPositionCoord","maxPosition","getDistanceBetweenPoints","pointA","pointB","getRotationBetweenPoints","limitArea","noOp","_max","getCenter","rotateAroundMidPoint","xMid","yMid","degrees","radian","outerBounds","naturalWidth","naturalHeight","hasWheelJustStarted","onMouseMove","onDragStopped","onTouchMove","onWheel","wheelTimer","computeSizes","emitCropData","setInitialCrop","onMediaLoaded","initialCroppedAreaPixels","croppedAreaPixels","mediaZoom","aspect","getZoomFromCroppedAreaPixels","cropZoom","crop","getInitialCropFromCroppedAreaPixels","onCropChange","onZoomChange","mediaRef","imageRef","videoRef","containerRect","videoWidth","videoHeight","mediaWidth","mediaHeight","containerWidth","containerHeight","fittingWidth","fittingHeight","getCropSize","onCropSizeChange","recomputeCropPosition","onDragStart","Cropper","getMousePoint","onDrag","touches","onPinchStart","getTouchPoint","onPinchMove","dragStartPosition","dragStartCrop","onInteractionStart","rafDragTimeout","cancelAnimationFrame","requestedPosition","newPosition","cleanEvents","onInteractionEnd","pixelY","normalizeWheel","newZoom","zoomSpeed","setNewZoom","zoomPoint","getPointOnContainer","zoomTarget","getPointOnMedia","maxZoom","minZoom","limitAreaFn","croppedAreaPercentages","widthInPixels","heightInPixels","sizePixels","computeCroppedArea","getAspect","cropData","getCropData","onCropComplete","onCropAreaChange","__","__extends","zoomWithScroll","preventZoomSafari","disableAutomaticStylesInjection","styleRef","onMediaLoad","clearScrollEvent","emitCropAreaChange","video","lastPinchDistance","lastPinchRotation","rafPinchTimeout","distance","newRotation","onRotationChange","mediaProps","cropShape","showGrid","_c","containerStyle","cropAreaStyle","mediaStyle","cropAreaClassName","mediaClassName","objectFit","onMouseDown","onTouchStart","autoPlay","onLoadedMetadata","controls","clientX","clientY","touch","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","isReactComponent","forceUpdate","isPureReactComponent","__self","__source","$$typeof","_owner","_status","_result","transition","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","Profiler","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_currentValue","_currentValue2","_threadCount","_defaultValue","_globalName","createFactory","lazy","_payload","startTransition","unstable_act","useDeferredValue","useId","useImperativeHandle","useInsertionEffect","useSyncExternalStore","useTransition","aa","da","ea","fa","ha","ia","ja","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","xlinkHref","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","Pa","Qa","Ra","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","db","eb","fb","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","lb","mb","namespaceURI","MSApp","execUnsafeLocalFunction","ob","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","lineHeight","opacity","orphans","tabSize","widows","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","setProperty","tb","menuitem","col","embed","keygen","wbr","ub","vb","wb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","Wb","memoizedState","dehydrated","Xb","Zb","sibling","Yb","$b","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","isDehydrated","containerInfo","Xc","Yc","Zc","$c","ad","bd","cd","ed","fd","gd","hd","Uc","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isPropagationStopped","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","vd","Ad","screenX","screenY","pageX","pageY","getModifierState","zd","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","Meta","Shift","Pd","Qd","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","tel","oninput","detachEvent","nextSibling","HTMLIFrameElement","contentEditable","focusedElem","selectionRange","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","removeAllRanges","addRange","animationend","animationiteration","animationstart","transitionend","animation","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","of","qf","rf","sf","uf","vf","wf","$a","ba","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","childLanes","Tg","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","updateQueue","firstBaseUpdate","lastBaseUpdate","bh","eventTime","lane","dh","eh","fh","gh","ih","jh","kh","nh","_reactInternals","lh","mh","oh","shouldComponentUpdate","ph","qh","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","sh","_stringRef","uh","vh","wh","xh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","gi","hi","ji","ki","getSnapshot","li","mi","ni","lastEffect","stores","oi","qi","ri","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useMutableSource","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","Ni","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tailMode","yj","Ej","Fj","Gj","wasMultiple","suppressHydrationWarning","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","_reactRootContainer","Xj","Yj","Zj","ak","onCommitFiberUnmount","bk","ck","dk","ek","gk","hk","ik","jk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","nk","pk","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","pendingChildren","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","fl","gl","hl","il","jl","zj","$k","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","tl","usingClientEntryPoint","Events","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","wl","supportsFiber","inject","dl","unstable_strictMode","findDOMNode","flushSync","hydrate","hydratedSources","_getVersion","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","sortIndex","expirationTime","priorityLevel","scheduling","isInputPending","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","scope","Timeout","clearFn","_clearFn","setInterval","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","onGlobalMessage","installPostMessageImplementation","installMessageChannelImplementation","installReadyStateChangeImplementation","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextProvider","isForwardRef","isFragment","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","clean","hasSpace","hasSeparator","separatorSplitter","unseparate","hasCamel","camelSplitter","uppers","uncamelize","jsx","jsxs","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","propFullName","secret","getShim","ReactPropTypes","bigint","activeFocusTraps","trap","activeTrap","trapIndex","isTabEvent","valueOrHandler","getActualTarget","composedPath","internalTrapStack","userOptions","delayInitialFocus","containers","containerGroups","tabbableGroups","nodeFocusedBeforeActivation","mostRecentlyFocusedNode","delayInitialFocusTimer","recentNavEvent","getOption","configOverrideOptions","configOptionName","findContainerIndex","tabbableNodes","getInitialFocusNode","firstTabbableGroup","firstTabbableNode","updateTabbableNodes","focusableNodes","lastTabbableNode","firstDomTabbableNode","lastDomTabbableNode","posTabIndexesFound","nextTabbableNode","nodeIdx","getActiveElement","tryFocus","isSelectableInput","previousActiveElement","findNextNavNode","_ref2$isBackward","isBackward","destinationNode","containerIndex","containerGroup","startOfGroupIndex","destinationGroupIndex","destinationGroup","lastOfGroupIndex","checkPointerDown","checkFocusIn","targetContained","nextNode","stopImmediatePropagation","navAcrossContainers","mruContainerIdx","mruTabIdx","checkKey","checkKeyNav","checkClick","addListeners","removeListeners","mutationObserver","mutations","mutation","removedNodes","updateObservedNodes","disconnect","subtree","childList","activateOptions","finishActivation","deactivateOptions","pauseOptions","unpauseOptions","elementsAsArray","_assign","_assign2","getKeys","gOPS","$assign","aLen","isEnum","$getPrototypeOf","exp","_defineProperty2","_typeof2","_typeof3","$at","TO_STRING","DOMIterables","Collection","META","$fails","wks","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$GOPS","$DP","gOPN","$JSON","_stringify","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","findChild","setSymbolDesc","protoDesc","$defineProperties","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","NEED","fastKey","getWeak","onFreeze","windowNames","getWindowNames","_setPrototypeOf2","_create2","buggy","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","extendPrototype","sourcePrototype","attr","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","resume","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","createSizedArray","_typeof$6","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","isSafari","_shouldRoundValues","bmPow","bmSqrt","bmFloor","bmMax","bmMin","BMMath","ProjectInterface$1","propertyNames","absArr","defaultCurveSegments","degToRads","roundCorner","roundValues","bmRnd","styleDiv","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","totalTime","frameMultiplier","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","RGBtoHSV","addSaturationToRGB","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","colorMap","setSubframeEnabled","getSubframeEnabled","setExpressionsPlugin","getExpressionsPlugin","setExpressionInterfaces","getExpressionInterfaces","setDefaultCurveSegments","getDefaultCurveSegments","setIdPrefix","getIdPrefix","createNS","_typeof$5","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","_workerSelf","setupWorker","blob","createWorker","completeLayers","layers","comps","jLen","kLen","hasMask","maskProps","masksProperties","convertPathsToAbsoluteValues","ty","findCompLayers","refId","completeShapes","shapes","completeText","comp","findComp","__used","ks","checkVersion","minimum","animVersionString","animVersion","checkText","minimumVersion","updateTextLayer","textLayer","documentData","iterateLayers","assets","checkChars","charData","ip","checkPathProperties","pathData","checkColors","iterateShapes","checkShapes","completeClosingShapes","moduleOb","__complete","completeChars","dataFunctionManager","assetLoader","formatResponse","contentTypeHeader","fullPath","errorCallback","completeData","onComplete","createProcess","processId","loadData","completeAnimation","ImagePreloader","proxyImage","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","testImageLoaded","intervalId","getBBox","_imageLoaded","createFootageData","footageData","_footageLoaded","ImagePreloaderFactory","loadAssets","_createImageData","setAssetsPath","loadedImages","loadedFootages","getAsset","createImgData","crossOrigin","_elementHelper","setCacheType","elementHelper","BaseEvent","triggerEvent","_cbs","callbacks","markerParser","parsePayloadLines","keysCount","_markers","markers","_marker","markerData","tm","cm","ProjectInterface","registerComposition","compositions","_thisProjectFunction","nm","prepareFrame","currentFrame","compInterface","renderers","registerRenderer","getRenderer","getRegisteredRenderer","_typeof$4","AnimationItem","isLoaded","currentRawFrame","frameRate","frameMult","playSpeed","playDirection","playCount","animationID","timeCompleted","segmentPos","isSubframeEnabled","_idle","_completedLoop","projectInterface","imagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","animType","RendererClass","globalData","setProjectInterface","autoloadSegments","initialSegment","setupAnimation","wrapperAttributes","getNamedItem","prerender","includeLayers","newLayers","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","searchExtraCompositions","updaFrameModifier","waitForFontsLoaded","triggerConfigError","rendererType","initItems","gotoFrame","resize","_height","updateContainerSize","setSubframe","renderFrame","resetFrame","triggerRenderFrameError","togglePause","setCurrentRawFrameValue","getMarkerData","markerName","goToAndStop","isFrame","numValue","frameModifier","goToAndPlay","advanceTime","nextValue","_isComplete","checkSegments","adjustSegment","setSegment","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","setLoop","isLooping","getAssetData","show","getDuration","updateDocumentData","getElementByPath","animationManager","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","animItem","subtractPlayingCount","registerAnimation","addPlayingCount","nowTime","searchAnimations","standalone","animElements","getElementsByClassName","lenAnims","innerText","unfreeze","getRegisteredAnimations","animations","BezierFactory","beziers","bezEasing","BezierEasing","kSplineTableSize","kSampleStepSize","float32ArraySupported","aA1","aA2","calcBezier","aT","getSlope","_p","_mSampleValues","_precomputed","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","lastSample","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","pooling","poolFactory","initialLength","_release","_length","_maxLength","pool","newElement","bezierLengthPool","addedLength","percents","lengths","segmentsLengthPool","totalLength","bezFunction","math","pointOnLine2D","det1","getBezierLength","pt1","pt2","pt3","pt4","ptCoord","perc","ptDistance","curveSegments","lastPoint","lengthData","BezierData","segmentLength","PointData","partialLength","buildBezierData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","getNewSegment","startPerc","endPerc","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z3","diffDist","dist1","dist2","dist3","bez","initFrame","frameNum","caching","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","ind","__fnct","getBezierEasing","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","quaternionToEuler","slerp","createQuaternion","omega","cosom","sinom","scale0","scale1","ax","ay","az","aw","bx","bz","bw","quat","qx","qy","qz","qw","heading","attitude","asin","bank","s1","s2","s3","getValueAtCurrentTime","renderedFrame","_caching","renderResult","setVValue","multipliedValue","mult","_mdf","processEffectsSequence","frameId","effectsSequence","_isFirstFrame","finalValue","kf","addEffect","effectFunction","addDynamicProperty","ValueProperty","vel","MultiDimensionalProperty","KeyframedValueProperty","KeyframedMultidimensionalProperty","PropertyFactory","getProp","sid","slotManager","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","setTripleAt","vX","vY","oX","oY","iX","iY","newPath","outPoints","inPoints","cnt","shapePool","shapePath","ShapeCollection","addShape","releaseShapes","shapeCollectionPool","newShapeCollection","shapeCollection","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","localShapeCollection","shape1","shape2","shapesEqual","ShapeProperty","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","convertToPath","convertStarToPath","convertPolygonToPath","rad","roundness","perimSegment","numPts","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","v1","Matrix","_cos","_sin","_tan","_rnd","mCos","mSin","rotateX","rotateY","rotateZ","shear","skew","skewFromAxis","sz","tz","a2","d2","e2","f2","g2","i2","j2","k2","l2","n2","o2","_identityCalculated","a1","d1","e1","f1","g1","i1","j1","k1","l1","n1","o1","matrixProps","_identity","equals","matr","cloneFromProps","applyToPoint","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_typeof$3","lottie","setLocation","setSubframeRendering","setPrefix","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","vars","queryString","useWebWorker","setIDPrefix","__getFactory","scripts","myScript","bodymovin","ShapeModifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","PuckerAndBloatModifier","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","processShapes","shapePaths","totalShapeLength","edges","newShapesData","addShapes","lastShape","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","py","pz","_isDirty","applyToMatrix","mat","precalculateMatrix","autoOriented","v2","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","RepeaterModifier","RoundCornersModifier","floatEqual","floatZero","lerp","lerpPoint","quadRoots","singleRoot","polynomialCoefficients","singlePoint","PolynomialBezier","linearize","pointEqual","coeffx","coeffy","extrema","intersectData","boundingBox","cx","cy","splitData","boxIntersect","intersectsImpl","tolerance","intersections","maxRecursion","d1s","d2s","crossProduct","lineIntersection","start1","end1","start2","end2","v3","v4","polarOffset","pointDistance","ZigZagModifier","setPoint","outputBezier","amplitude","outAmplitude","inAmplitude","angO","angI","getPerpendicularVector","vector","rot","getProjectingAngle","pVector","zigZagCorner","frequency","pointType","prevPoint","nextPoint","prevDist","nextDist","zigZagSegment","dist","normalAngle","linearOffset","offsetSegment","p1a","p1b","p2b","p2a","joinLines","seg1","seg2","angleOut","tangentAngle","angleIn","getIntersection","pruneSegmentIntersection","outa","outb","pruneIntersections","offsetSegmentSplit","inflectionPoints","OffsetPathModifier","getFontProperties","fStyle","fWeight","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","applyTransforms","elemsData","_currentCopies","resetElements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","itemsTransform","hasReloaded","copies","ix","reloadShapes","elems","transformData","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","currentV","currentI","currentO","closerV","newPosPerc","derivative","denom","tcusp","p10","p11","p20","p21","shapeSegmentInverted","pointsType","inputBezier","multiSegments","lastSeg","multiSegment","FontManager","emptyChar","combinedCharacters","BLACK_FLAG_CODE_POINT","REGIONAL_CHARACTER_A_CODE_POINT","REGIONAL_CHARACTER_Z_CODE_POINT","surrogateModifiers","setUpNode","fontVariant","familyArray","enabledFamilies","trimFontOptions","createHelper","helper","engine","fontProps","tHelper","fFamily","fClass","tCanvasHelper","OffscreenCanvas","getComputedTextLength","getCodePoint","codePoint","isRegionalCode","Font","typekitLoaded","_warned","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","isZeroWidthJoiner","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","isVariationSelector","fontPrototype","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","monoCase","sansCase","fPath","fOrigin","getCharData","getFontByName","fName","_char2","doubleSize","singleSize","loadedCount","SlotManager","slotFactory","RenderableElement","slots","initRenderable","isTransparent","renderableComponents","addRenderableComponent","removeRenderableComponent","prepareRenderableFrame","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","hideOnTransparent","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","EffectsManager","effectElements","effectItem","GroupEffect","BaseElement","FrameElement","FootageElement","imageLoader","initBaseData","AudioElement","_isPlaying","_canPlay","_currentTime","_volumeMultiplier","_previousVolume","_placeholder","lv","au","BaseRenderer","checkMasks","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","layerInterface","maskManager","registerMaskInterface","effectsInterface","createEffectsInterface","registerEffectsInterface","shapeInterface","shapesData","itemsData","textInterface","setBlendMode","blendModeValue","bm","baseElement","layerId","effectsManager","getType","prepareProperties","_isParent","getBaseElement","FootageInterface","getFootageData","timeRemapped","totalVolume","volumeValue","checkLayers","buildItem","checkPendingElements","createItem","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","buildAllItems","pInterface","progressiveLoad","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","pendingElements","pathValue","setupGlobalData","fontsContainer","animationItem","compSize","effectTypes","TRANSFORM_EFFECT","TransformElement","MaskElement","maskElement","viewData","solidPath","expansor","feMorph","currentMasks","maskType","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","createLayerSolidPath","invRect","drawPath","maskedElement","initTransform","_matMdf","_localMatMdf","_opMdf","localMat","localOpacity","ao","renderTransform","finalMat","renderLocalTransform","localTransforms","lmat","localOp","searchEffectTransforms","renderableEffectsManager","transformEffects","getEffects","globalToLocal","ptNew","mHelper","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","featureSupport","svgLumaHidden","offscreenCanvas","registeredEffects$1","idPrefix","SVGEffects","filterManager","createFilter","filters","Effect","countsAsEffect","registerEffect$1","SVGBaseElement","HierarchyElement","RenderableDOMElement","IImageElement","initElement","sourceRect","ProcessedElement","IShapeElement","initRendererElement","createContainerElements","matteElement","transformedElement","_sizeChanged","layerElementParent","matteMasks","ln","cp","cpGroup","renderElement","destroyBaseElement","createRenderableComponents","getMatte","matteType","useElement","masker","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","setMatte","initHierarchy","checkParenting","createContent","renderInnerContent","innerElem","imagePreserveAspectRatio","addShapeToModifiers","shapeModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","processedElements","addProcessedElement","lineCapEnum","lineJoinEnum","SVGShapeData","transformers","lStr","SVGStyleData","pElem","msElem","DashProperty","dataProps","dashStr","dashoffset","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGNoStyleData","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","SVGTransformData","comparePoints","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","cst","opacityId","opFill","ost","buildShapeString","_o","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderNoop","renderPath","pathStringTransformed","redraw","iterations","lLen","renderFill","styleElem","renderGradientStroke","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","createRenderFunction","SVGShapeElement","stylesList","animatedContents","LetterProps","sw","TextProperty","_frameId","keysIndex","canResize","minimumFontSize","currentData","boxWidth","defaultBoxWidth","justifyOffset","lineWidths","ls","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","newLineFlag","letters","anchorGrouping","currentSize","currentPos","currentLine","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","an","anIndexes","animatorJustifyOffset","extra","animatorData","letterData","based","animators","rn","totalChars","newInd","currentInd","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorProp","TextSelectorPropFactory","_currentTextLength","finalS","finalE","sm","getMult","textProperty","easer","tot","smoothness","newCharsFlag","getTextSelectorProp","TextAnimatorDataProperty","animatorProps","textAnimatorAnimatables","TextAnimatorProperty","renderType","_hasMaskedPath","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","ITextElement","searchProperties","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","tanAngle","matrixHelper","renderedLettersCount","tLength","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","letterM","letterP","defaultPropsArray","animatorFirstCharOffset","justifyOffsetMult","isNewLine","animatorOffset","atan","textAnimator","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","buildColor","colorData","emptyProp","validateText","buildNewText","emptyShapeData","SVGTextLottieElement","textSpans","ISolidElement","NullElement","SVGRendererBase","ICompElement","SVGCompElement","supports3d","SVGRenderer","titleElement","titleId","descElement","descId","preserveAspectRatio","contentVisibility","viewBoxOnly","viewBoxSize","filterSize","runExpressions","ShapeTransformManager","sequences","sequenceList","transform_key_count","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","buildShapeData","shapeItem","tSpan","usesGlyphs","cachedSpansLength","childSpan","glyphElement","_debug","tElement","justify","textBox","renderedLetter","textSpan","findIndexByInd","appendElementInPos","elementIndex","tp","matteMask","nextElement","setElements","getElements","destroyElements","addTransformSequence","sequence","processSequence","processSequences","getNewKey","lumaLoader","lumaBuffer","lumaBufferCtx","loadLuma","createLumaSvgFilter","loadLumaCanvas","getLumaCanvas","registeredEffects","CVEffects","registerEffect","CVMaskElement","hasMasks","CVBaseElement","operationsMap","CVShapeData","transformsManager","styledShapes","styledShape","trNodes","CVShapeElement","CVTextElement","currentRender","sWidth","fValue","CVImageElement","CVSolidElement","CanvasRendererBase","CanvasContext","CVContextData","cArrPos","cTr","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","CVCompElement","CanvasRenderer","clearCanvas","dpr","currentGlobalAlpha","contextData","ctxTransform","ctxOpacity","ctxFillStyle","ctxStrokeStyle","ctxLineWidth","ctxLineCap","ctxLineJoin","ctxMiterLimit","ctxFill","ctxFillRect","ctxStroke","HBaseElement","HSolidElement","HShapeElement","shapesContainer","currentBBox","HTextElement","textPaths","isMasked","HCameraElement","_prevMat","HImageElement","HybridRendererBase","threeDElements","camera","HCompElement","HybridRenderer","createElements","buffers","bufferCanvas","bufferCanvas2","_isProxy","transformCanvas","blendMode","showElement","prepareLayer","bufferCtx","getTransform","exitLayer","forceRealStack","transformHelper","dashResetter","preTransforms","co","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","currentStyle","coOp","grd","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","par","actionFlag","mozTransformOrigin","isDashed","elementWidth","elementHeight","elementRel","animationRel","fillType","duplicate","newLength","forceRestore","prevStack","saveOnNativeFlag","currentStack","newStack","setOpacity","trProps","checkBlendMode","transformedElementStyle","matrixValue","webkitTransform","addEffects","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","shapeBoundingBox","xMax","tempBoundingBox","calculateF","calculateBoundingBox","expandStrokeBoundingBox","widthProperty","kfw","currentBoxContains","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","svgTransform","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","imageElem","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","startPos","endPos","createThreeDContainer","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","cWidth","cHeight","floatingContainer","_createBaseContainerElements","_thisLayerFunction","pixelAspect","frameDuration","displayStartTime","numLayers","_typeof$2","seedRandom","nodecrypto","rngname","startdenom","significance","ARC4","keylen","typ","mixkey","seed","smear","stringseed","tostring","shortseed","entropy","randomBytes","msCrypto","getRandomValues","plugins","autoseed","arc4","prng","quick","pass","is_math_call","initialize$2","SHAPE","_typeof$1","ExpressionManager","frames","_lottieGlobal","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","mul","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","valueAtTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","numKeys","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","seedrandom","randSeed","posterizeTime","framesPerSecond","hasParent","executeExpression","frameExpressionId","__preventDeadCodeRemoval","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","MaskManagerInterface","MaskInterface","_mask","_masksInterfaces","ExpressionPropertyInterface","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","getSpeedAtTime","propertyGroup","defaultGetter","UnidimensionalPropertyInterface","MultidimensionalPropertyInterface","TransformExpressionInterface","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","transformInterface","anchorPointDescriptor","anchor_point","_name","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","createGroupInterface","groupInterface","mn","_propertyGroup","createValueInterface","numProperties","np","en","expressionProperty","setGroupProperty","effectsData","ShapePathInterface","propertyIndex","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","interfaces","transformInterfaceFactory","cix","contentsInterfaceFactory","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","_sourceText","sourceText","stringValue","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","footage","getInterface","expressionHelpers","searchExpressions","_cachingAtTime","getStaticValueAtTime","addPropertyDecorator","durationFlag","cycleDuration","firstKeyFrame","lastKeyFrame","initV","endV","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","lastTime","propertyGetShapeProp","trims","initialize$1","addDecorator","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","SVGComposableEffect","createMergeNode","resultId","ins","feMergeNode","feMerge","linearFilterValue","SVGTintFilter","linearFilter","matrixFilter","SVGFillFilter","SVGStrokeEffect","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","globalFilterSize","feGaussianBlur","feOffset","feFlood","feComposite","colorBlack","colorWhite","groupPath","elemChildren","pathMasker","dasharrayValue","getTotalLength","lineLength","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","_svgMatteSymbols","SVGMatte3Effect","filterElem","SVGGaussianBlurEffect","TransformEffect","SVGTransformEffect","CVTransformEffect","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","sigma","dimensions","sigmaX","sigmaY","edgeMode","forceFrame","isUniformScale","scaleHeight","scaleWidth","__webpack_amd_options__","subMinutes","subHours","subDays","subWeeks","subMonths","subYears","getQuarter","getYear","dirtySeconds","dirtyMinutes","dirtyHours","setQuarter","dirtyQuarter","setYear","dirtyYear","dirtyDatesArray","datesArray","MILLISECONDS_IN_DAY","differenceInCalendarDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","differenceInCalendarMonths","dateLeft","dateRight","differenceInCalendarWeeks","startOfWeekLeft","startOfWeekRight","differenceInCalendarYears","startOfMonth","startOfYear","cleanDate","endOfDay","endOfWeek","endOfMonth","dirtyLeftDate","dirtyRightDate","dateLeftStartOfDay","dateRightStartOfDay","isSameMonth","isSameYear","isSameQuarter","dateLeftStartOfQuarter","dateRightStartOfQuarter","dirtyDateToCompare","dateToCompare","isWithinInterval","interval","parseISO","_options$additionalDi","additionalDigits","dateStrings","dateString","dateTimeDelimiter","timeZoneDelimiter","timezone","splitDateString","parseYearResult","captures","restDateString","century","parseYear","dateRegex","isWeekDate","parseDateUnit","dayOfWeek","_year","validateWeekDate","fourthOfJanuaryDay","dayOfISOWeekYear","daysInMonths","isLeapYearIndex","validateDate","validateDayOfYearDate","parseDate","timeRegex","parseTimeUnit","validateTime","parseTime","timezoneString","timezoneRegex","_hours","validateTimezone","parseTimezone","isNodeFound","ignoreClass","correspondingElement","passiveEventSupport","handlersMap","enabledInstances","IGNORE_CLASS_NAME","getEventHandlerOptions","handlerOptions","onClickOutsideHOC","_class","_Component","__outsideClickHandler","__clickOutsideHandlerProp","getInstance","handleClickOutside","__getComponentNode","setClickOutsideRef","enableOnClickOutside","_uid","testPassiveEventSupport","eventTypes","findHighest","composed","disableOnClickOutside","getRef","instanceRef","_proto","wrappedRef","getClass","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","supportsStandardArguments","EvalError","origSymbol","hasSymbolSham","foo","concatty","arrLike","slicy","boundLength","boundArgs","joiny","$hasOwn","hasDescriptors","$floor","functionLengthIsConfigurable","functionLengthIsWritable","getPolyfill","polyfill","isRegexMarker","badStringifier","throwRegexMarker","flagsBound","functionsHaveConfigurableNames","functionsHaveNames","$bind","boundFunctionsHaveNames","TypeErr","tryDateObject","_gud2","_Provider$childContex","_Consumer$contextType","_Component2","_temp2","validate","checkType","componentNameSafe","propFullNameSafe","chainedCheckType","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","encodingOrOffset","fromArrayLike","fromArrayBuffer","isEncoding","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","indexSize","valLength","readUInt16BE","foundIndex","hexWrite","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","thisStart","thisEnd","thisCopy","targetCopy","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","dst","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","UserAgent_DEPRECATED","isEventSupported","sX","sY","pX","pY","HORIZONTAL_AXIS","spinX","spinY","pixelX","getEventType","firefox","_ie","_firefox","_opera","_webkit","_chrome","_ie_real_version","_osx","_windows","_linux","_android","_win64","_iphone","_ipad","_native","_mobile","_populated","_populate","uas","agent","trident","ver","ieCompatibilityMode","ie64","webkit","safari","chrome","windows","osx","linux","iphone","mobile","nativeApp","android","ipad","useHasFeature","ExecutionEnvironment","hasFeature","eventNameSuffix","isSupported","canUseWorkers","canUseEventListeners","canUseViewport","isInWorker","possibleConstructorReturn","Setter","_utcDate","ValueSetter","_Setter","validateValue","subPriority","DateToSystemTimezoneSetter","_Setter2","timestampIsSet","convertedDate","Parser","EraParser","_Parser","numericPatterns","timezonePatterns","parseFnResult","mapFn","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","YearParser","isTwoDigitYear","normalizedTwoDigitYear","LocalWeekYearParser","ISOWeekYearParser","firstWeekOfYear","ExtendedYearParser","QuarterParser","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","LocalWeekParser","dirtyWeek","setUTCWeek","ISOWeekParser","dirtyISOWeek","setUTCISOWeek","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","DayOfYearParser","setUTCDay","dirtyDay","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","ISODayParser","setUTCISODay","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","SecondParser","FractionOfSecondParser","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","notWhitespaceRegExp","unescapedLatinCharacterRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","_options$locale2","_options$locale2$opti","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatString","subFnOptions","setters","firstCharacter","longFormatter","usedTokens","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","parser","incompatibleTokens","incompatibleToken","usedToken","fullToken","uniquePrioritySetters","setterArray","addLeadingZeros","signedYear","dayPeriodEnumValue","numberOfDigits","dayPeriodEnum","lightFormatters","signedWeekYear","getUTCDayOfYear","localDayOfWeek","isoDayOfWeek","_localize","timezoneOffset","_originalDate","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","originalDate","dirtyDelimiter","absOffset","dirtyFormatStr","formatStr","formatterOptions","cleanEscapedString","formatter","ManagerReferenceNodeContext","ManagerReferenceNodeSetterContext","newReferenceNode","setReferenceNode","unwrapArray","safeInvoke","initialStyle","initialArrowStyle","InnerPopper","popperNode","updatePopperInstance","arrowNode","applyStyle","updateStateModifier","popperInstance","destroyPopperInstance","referenceElement","PopperJS","getOptions","setPopperNode","getPopperStyle","getPopperPlacement","outOfBoundaries","getOutOfBoundariesState","setArrowNode","getArrowStyle","InnerReference","refHandler","startOfISOWeek","startOfISOWeekYear","getISOWeekYear","getISOWeek","usePrevious","ignore","useTranslation","i18nFromProps","i18nFromContext","defaultNSFromContext","reportNamespaces","notReadyT","retNotReady","i18nOptions","keyPrefix","addUsedNamespaces","initializedStoreOnce","getT","getFixedT","nsMode","_useState","_useState2","setT","joinedNS","previousJoinedNS","boundReset","isInitial","Container","I18nextProvider","PerformanceEvents","PerformanceEventStatus","CryptoKeyStoreNames","IntFields","ServerError","JoseHeaderErrorMessage","JoseHeaderError","createMissingKidError","createMissingAlgError","alg","kid","shrHeaderOptions","shrHeader","JoseHeader","Pop","decimalToHex","generateGuid","MathUtils","guidHolder","guidResponse","isGuid","stringToUtf8Arr","sDOMStr","nChr","nArrLen","nStrLen","nMapIdx","aBytes","nIdx","nChrIdx","stringToArrayBuffer","utf8ArrToString","sView","nPart","nLen","getSortedObjectString","urlEncode","urlEncodeArr","inputArr","base64EncArr","inputUtf8Arr","eqLen","sB64Enc","nMod3","nUint24","uint6ToB64","nUint6","encodedString","base64DecToArr","base64String","nBlockSize","nInLen","nOutLen","nMod4","nOutIdx","nInIdx","b64ToUint6","charNum","BrowserAuthErrorMessage","BrowserAuthError","createPkceNotGeneratedError","createCryptoNotAvailableError","createHttpMethodNotImplementedError","createEmptyNavigationUriError","createEmptyHashError","hashValue","createHashDoesNotContainStateError","createHashDoesNotContainKnownPropertiesError","createUnableToParseStateError","createStateInteractionTypeMismatchError","createInteractionInProgressError","createPopupWindowError","createEmptyWindowCreatedError","createUserCancelledError","createMonitorPopupTimeoutError","createMonitorIframeTimeoutError","createRedirectInIframeError","windowParentCheck","createBlockReloadInHiddenIframeError","createBlockAcquireTokenInPopupsError","createIframeClosedPrematurelyError","createSilentLogoutUnsupportedError","createNoAccountError","createSilentPromptValueError","givenPrompt","createUnableToParseTokenRequestCacheError","createNoTokenRequestCacheError","createAuthRequestNotSetError","createNoCachedAuthorityError","createNonBrowserEnvironmentError","createDatabaseNotOpenError","createPostRequestFailedError","errorDesc","createGetRequestFailedError","createFailedToParseNetworkResponseError","createUnableToLoadTokenError","errorDetail","createSigningKeyNotFoundInStorageError","keyId","createAuthCodeRequiredError","createAuthCodeOrNativeAccountIdRequiredError","createSpaCodeAndNativeAccountIdPresentError","createDatabaseUnavailableError","createUnableToAcquireTokenFromNativePlatformError","createNativeHandshakeTimeoutError","createNativeExtensionNotInstalledError","createNativeConnectionNotEstablishedError","createNativeBrokerCalledBeforeInitialize","createNativePromptParameterNotSupportedError","generateCodes","codeVerifier","generateCodeVerifier","generateCodeChallengeFromVerifier","codeChallenge","verifier","challenge","pkceCodeVerifier","sha256Digest","pkceHashedCodeVerifier","dataBuffer","generateKey","algorithm","extractable","keyUsages","subtle","exportKey","importKey","initPrng","msrCrypto","msGenerateKey","msExportKey","resultBuffer","resultString","keyString","keyBuffer","msImportKey","msSign","digestOperation","S256_HASH_ALG","PUBLIC_EXPONENT","cryptoOptions","hasBrowserCrypto","subtleCrypto","hasIECrypto","hasMsrCrypto","useMsrCrypto","keygenAlgorithmOptions","modulusLength","publicExponent","generateKeyPair","usages","exportJwk","importJwk","dbName","tableName","dbOpen","openDB","indexedDB","createObjectStore","closeConnection","validateDbIsOpen","dbGet","transaction","objectStore","dbPut","dbDelete","dbGetKeys","containsKey","dbContainsKey","deleteDatabase","deleteDbRequest","cacheKeys","storeName","inMemoryCache","MemoryStorage","indexedDBCache","handleDatabaseAccessError","clearInMemory","clearPersistent","dbDeleted","CcsCredentialType","asymmetricKeys","symmetricKeys","performanceClient","cryptoConfig","browserCrypto","b64Encode","b64Decode","guidGenerator","pkceGenerator","createNewGuid","generatePkceCodes","getPublicKeyThumbprint","publicKeyThumbMeasurement","startMeasurement","CryptoOptsGetPublicKeyThumbprint","CryptoOps","EXTRACTABLE","POP_KEY_USAGES","keyPair","publicKey","publicKeyJwk","pubKeyThumprintObj","kty","publicJwkString","hashString","publicJwkHash","privateKey","privateKeyJwk","unextractablePrivateKey","requestMethod","resourceRequestMethod","requestUri","resourceRequestUri","endMeasurement","removeTokenBindingKey","clearKeystore","signJwt","signJwtMeasurement","CryptoOptsSignJwt","cachedKeyPair","publicKeyJwkString","encodedKeyIdThumbprint","getShrHeaderString","encodedShrHeader","cnf","jwk","encodedPayload","tokenString","tokenBuffer","signatureBuffer","encodedSignature","signedJwt","plainText","hashBuffer","hashBytes","clientId","libraryName","libraryVersion","applicationTelemetry","eventsByCorrelationId","queueMeasurements","preQueueTimeByCorrelationId","startPerformanceMeasurement","measureName","startPerformanceMeasuremeant","getIntFields","getPreQueueTime","preQueueEvent","calculateQueuedTime","preQueueTime","queueTime","manuallyCompleted","queueMeasurement","existingMeasurements","measurementArray","eventCorrelationId","generateId","performanceMeasurement","inProgressEvent","eventId","InProgress","startTimeMs","appName","appVersion","cacheEventByCorrelationId","discardMeasurement","discardMeasurements","addStaticFields","counters","rootEvent","queueInfo","totalQueueTime","totalQueueCount","manuallyCompletedCount","getQueueInfo","discardCache","incompleteSubMeasurements","durationMs","flushMeasurement","finalEvent","incompleteSubsCount","subMeasurement","queuedTimeMs","queuedCount","queuedManuallyCompletedCount","Completed","truncateIntegralFields","emitEvents","queueMeasurementForCorrelationId","intFields","StubPerformanceMeasurement","addQueueMeasurement","setPreQueueTime","DEFAULT_CRYPTO_IMPLEMENTATION","createUnexpectedError","CredentialEntity","generateAccountIdForCacheKey","generateCredentialId","generateCredentialIdForCacheKey","credentialType","familyId","generateTarget","generateTargetForCacheKey","generateCredentialKey","generateCredentialCacheKey","tokenType","requestedClaimsHash","ID_TOKEN","ACCESS_TOKEN","ACCESS_TOKEN_WITH_AUTH_SCHEME","REFRESH_TOKEN","generateClaimsHashForCacheKey","generateSchemeForCacheKey","BEARER","idTokenEntity","IdTokenEntity","ClientConfigurationErrorMessage","ClientConfigurationError","claimsRequestParseError","urlString","urlParseError","createUrlEmptyError","createEmptyScopesArrayError","inputScopes","promptValue","createInvalidClaimsRequestError","createEmptyLogoutRequestError","createEmptyTokenRequestError","createInvalidCodeChallengeMethodError","createInvalidCodeChallengeParamsError","createInvalidCloudDiscoveryMetadataError","createInvalidAuthorityMetadataError","createUntrustedAuthorityError","createInvalidAzureCloudInstanceError","createMissingSshJwkError","createMissingSshKidError","createMissingNonceAuthenticationHeadersError","createInvalidAuthenticationHeaderError","invalidHeaderName","createAuthorityMismatchError","scopeArr","trimArrayEntries","filteredInput","removeEmptyStringsFromArray","validateInputScopes","inputScopeString","ScopeSet","scopeSet","containsOnlyOIDCScopes","removeScope","removeOIDCScopes","lowerCaseScopesSet","printScopesLowerCase","asArray","containsScope","defaultScopeCount","defaultScope","newScope","newScopes","appendScope","createAppendScopeSetError","createRemoveEmptyScopeFromSetError","otherScopes","unionScopes","unionScopeSets","sizeOtherScopes","getScopeCount","sizeThisScopes","printScopes","rawToken","AuthToken","extractTokenClaims","encodedToken","decodedToken","decodeAuthToken","base64TokenPayload","base64Decoded","checkMaxAge","authTime","maxAge","cryptoImpl","commonLogger","allAccountKeys","getAccountKeys","accountEntities","accountEntity","getAccountInfoFromEntity","accountFilter","getAccountsFilteredBy","accountInfo","getIdToken","cacheRecord","setIdTokenCredential","accessToken","saveAccessToken","refreshToken","setRefreshTokenCredential","appMetadata","setAppMetadata","credential","accessTokenFilter","tokenKeys","getTokenKeys","currentScopes","removedAccessTokens","accessTokenKeyMatchesFilter","tokenEntity","getAccessTokenCredential","credentialMatchesFilter","intersectingScopeSets","removeAccessToken","setAccessTokenCredential","matchingAccounts","isAccountKey","matchHomeAccountId","matchLocalAccountId","matchUsername","matchEnvironment","matchRealm","matchNativeAccountId","lowerCaseKey","clientIdValidation","familyIdValidation","matchClientId","userAssertionHash","matchUserAssertionHash","matchCredentialType","matchFamilyId","matchTarget","matchTokenType","SSH","matchKeyId","getAppMetadataFilteredByInternal","allCacheKeys","matchingAppMetadata","isAppMetadata","getAppMetadata","getAuthorityMetadataKeys","matchedEntity","isAuthorityMetadata","getAuthorityMetadata","removeAllAccounts","removedAccounts","removeAccount","accountKey","removeAccountContext","allTokenKeys","removedCredentials","removeIdToken","removeRefreshToken","POP","removeAppMetadata","readCacheRecord","cachedAccount","readAccountFromCache","cachedIdToken","cachedAccessToken","getAccessToken","cachedRefreshToken","getRefreshToken","cachedAppMetadata","readAppMetadataFromCache","idTokenFilter","idTokens","getIdTokensByFilter","numIdTokens","idTokenKeys","idTokenKeyMatchesFilter","getIdTokenCredential","inputKey","createSearchScopes","authScheme","authenticationScheme","sshKid","accessTokenKeys","accessTokens","numAccessTokens","keyMustContainAllScopes","familyRT","refreshTokenFilter","refreshTokenKeys","refreshTokens","refreshTokenKeyMatchesFilter","getRefreshTokenCredential","appMetadataFilter","getAppMetadataFilteredBy","appMetadataEntries","numAppMetadata","cloudMetadata","getAuthorityMetadataByAlias","containsScopeSet","json","setServerTelemetry","getServerTelemetry","setAuthorityMetadata","setThrottlingCache","getThrottlingCache","updateCredentialCacheKey","nowSeconds","isTokenExpired","expiresOn","expirationSec","TimeUtils","cachedAt","createAccessTokenEntity","extExpiresOn","cryptoUtils","refreshOn","requestedClaims","atEntity","AccessTokenEntity","extendedExpiresOn","tokenClaims","createRefreshTokenEntity","rtEntity","RefreshTokenEntity","generateAppMetadataKey","AppMetadataEntity","generateAppMetadataCacheKey","createAppMetadataEntity","isAppMetadataEntity","failedRequests","cacheHits","isServerTelemetryEntity","validateKey","validateEntity","expiresAt","updateCloudDiscoveryMetadata","fromNetwork","preferred_cache","preferred_network","aliasesFromNetwork","updateEndpointMetadata","authorization_endpoint","token_endpoint","end_session_endpoint","issuer","endpointsFromNetwork","jwks_uri","canonical_authority","resetExpiresAt","isExpired","isAuthorityMetadataEntity","isThrottlingEntity","setRequestState","userState","libraryState","ProtocolUtils","generateLibraryState","createNoCryptoObjectError","stateObj","stateString","parseRequestState","splitState","libraryStateString","libraryStateObj","userRequestState","ProtocolMode","AzureCloudInstance","cacheLocation","validateWindowStorage","windowStorage","LocalStorage","SessionStorage","_urlString","getHash","UrlString","canonicalizeUri","lowerCaseUrl","validateAsUri","getUrlComponents","createUrlParseError","HostNameAndPort","PathSegments","Protocol","createInsecureAuthorityUriError","appendQueryString","urlObject","pathArray","COMMON","ORGANIZATIONS","constructAuthorityUriFromObject","parseHash","regEx","urlComponents","AbsolutePath","QueryString","pathSegments","getAbsoluteUrl","relativeUrl","baseComponents","hashIndex1","hashIndex2","queryIndex1","queryIndex2","parsedHash","deserializedHash","queryStringToObject","createHashNotDeserializedError","parsedQueryString","parseQueryString","deserializedQueryString","getDeserializedHash","error_description","extractBrowserRequestState","parseServerResponseFromHash","locationHash","hashUrlString","cacheConfig","COOKIE_LIFE_MULTIPLIER","internalStorage","browserStorage","setupBrowserStorage","temporaryCacheStorage","setupTemporaryCacheStorage","temporaryCacheLocation","cacheMigrationEnabled","migrateCacheEntries","createKeyMaps","idTokenKey","clientInfoKey","errorKey","ERROR","errorDescKey","ERROR_DESC","migrateCacheEntry","newKey","setTemporaryCache","accountKeys","ACCOUNT_KEYS","TOKEN_KEYS","isCredentialKey","credObj","validateAndParseJson","isIdTokenEntity","addTokenKey","isAccessTokenEntity","accessTokenEntity","isRefreshTokenEntity","refreshTokenEntity","isAccountEntity","addAccountKeyToMap","jsonValue","parsedJson","removeAccountKeyFromMap","parsedAccount","removalIndex","removeTokenKey","idRemoval","accessRemoval","refreshRemoval","parsedIdToken","accessTokenKey","parsedAccessToken","refreshTokenKey","parsedRefreshToken","appMetadataKey","parsedMetadata","serverTelemetryKey","serverTelemetry","setWrapperMetadata","wrapperSKU","wrapperVersion","WRAPPER_SKU","WRAPPER_VER","getWrapperMetadata","activeAccountKeyFilters","generateCacheKey","ACTIVE_ACCOUNT_FILTERS","activeAccountValueFilters","activeAccountKeyLocal","ACTIVE_ACCOUNT","activeAccountValueLocal","activeAccount","getAccountInfoByFilter","activeAccountValueObj","activeAccountKey","activeAccountValue","getAccountInfoByHints","loginHint","accountSid","throttlingCacheKey","parsedThrottlingCache","throttlingCache","getTemporaryCache","storeAuthStateInCookie","itemCookie","getItemCookie","setItemCookie","clearItemCookie","clearTokensAndKeysWithClaims","cookieName","cookieValue","cookieStr","getCookieExpirationTime","secureCookies","cookieList","clearMsalCookies","cookiePrefix","cookieKey","cookieLifeDays","getCache","setCache","ADAL_ID_TOKEN","generateAuthorityKey","stateId","AUTHORITY","generateNonceKey","NONCE_IDTOKEN","generateStateKey","REQUEST_STATE","getCachedAuthority","cachedState","stateCacheKey","authorityCacheKey","updateCacheEntries","authorityInstance","nonceCacheKey","ccsCredential","HOME_ACCOUNT_ID","CCS_CREDENTIAL","UPN","resetRequestCache","REQUEST_PARAMS","ORIGIN_URI","URL_HASH","CORRELATION_ID","NATIVE_REQUEST","setInteractionInProgress","cleanRequestByState","stateKey","cleanRequestByInteractionType","stateValue","parsedState","cacheCodeRequest","authCodeRequest","encodedValue","getCachedRequest","encodedTokenRequest","parsedRequest","cachedAuthority","getCachedNativeRequest","cachedRequest","isInteractionInProgress","getInteractionInProgress","INTERACTION_STATUS_KEY","getLegacyLoginHint","adalIdTokenString","msalIdTokenString","cachedIdTokenString","currentCacheKey","updatedCacheKey","cacheItem","getRedirectRequestContext","REDIRECT_CONTEXT","setRedirectRequestContext","DEFAULT_SYSTEM_OPTIONS","tokenRenewalOffsetSeconds","preventCorsPreflight","DEFAULT_LOGGER_IMPLEMENTATION","claimsBasedCachingEnabled","DEFAULT_NETWORK_IMPLEMENTATION","sendGetRequestAsync","sendPostRequestAsync","DEFAULT_LIBRARY_INFO","sku","cpu","DEFAULT_CLIENT_CREDENTIALS","clientSecret","clientAssertion","DEFAULT_AZURE_CLOUD_OPTIONS","azureCloudInstance","tenant","application","StubbedNetworkModule","GET","getFetchHeaders","onLine","getHeaderDict","reqBody","POST","optionsHeaders","headerDict","sendRequestAsync","setXhrHeaders","jsonResponse","networkResponse","headerArr","getAllResponseHeaders","headerVal","clearHash","replaceHash","urlParts","isInIframe","isInPopup","opener","getCurrentUri","getHomepage","getBrowserNetworkClient","blockReloadInHiddenIframes","hashContainsKnownProperties","BrowserUtils","blockRedirectInIframe","allowRedirectInIframe","isIframedApp","blockAcquireTokenInPopups","blockNonBrowserEnvironment","isBrowserEnvironment","blockNativeBrokerCalledBeforeInitialized","allowNativeBroker","detectIEOrEdge","msie","msie11","msedge","navigateInternal","NavigationClient","defaultNavigateWindow","navigateExternal","noHistory","DEFAULT_IFRAME_TIMEOUT_MS","KeyLocation","eventCallbacks","listeningToStorageEvents","handleAccountCacheChange","emitEvent","cacheValue","parsedValue","ACCOUNT_ADDED","ACCOUNT_REMOVED","thumbprint","preProcess","cacheManager","ThrottlingUtils","generateThrottlingStorageKey","throttleTime","errorCodes","checkResponseStatus","checkResponseForRetryAfter","thumbprintValue","calculateThrottleTime","RETRY_AFTER","error_codes","currentSeconds","homeAccountIdentifier","shrClaims","networkClient","sendPostRequest","tokenEndpoint","redirectUri","promptValues","createInvalidPromptError","validateCodeChallengeParams","codeChallengeMethod","validateCodeChallengeMethod","sanitizeEQParams","eQParams","queryParams","addResponseTypeCode","RESPONSE_TYPE","addResponseTypeForTokenAndIdToken","responseMode","RESPONSE_MODE","QUERY","addNativeBroker","NATIVE_BROKER","addScopes","addOidcScopes","requestScopes","SCOPE","CLIENT_ID","validateRedirectUri","REDIRECT_URI","POST_LOGOUT_URI","idTokenHint","ID_TOKEN_HINT","domainHint","DOMAIN_HINT","LOGIN_HINT","CCS_HEADER","SID","addClaims","clientCapabilities","mergedClaims","addClientCapabilitiesToClaims","validateClaims","CLIENT_REQUEST_ID","libraryInfo","X_CLIENT_SKU","X_CLIENT_VER","X_CLIENT_OS","X_CLIENT_CPU","appTelemetry","X_APP_NAME","X_APP_VER","validatePrompt","PROMPT","NONCE","addCodeChallengeParams","CODE_CHALLENGE","CODE_CHALLENGE_METHOD","CODE","DEVICE_CODE","CODE_VERIFIER","CLIENT_SECRET","CLIENT_ASSERTION","clientAssertionType","CLIENT_ASSERTION_TYPE","oboAssertion","OBO_ASSERTION","tokenUse","REQUESTED_TOKEN_USE","grantType","GRANT_TYPE","addClientInfo","sanitizedEQParams","XMS_CC","cnfString","TOKEN_TYPE","REQ_CNF","sshJwkString","serverTelemetryManager","X_CLIENT_CURR_TELEM","generateCurrentRequestHeaderValue","X_CLIENT_LAST_TELEM","generateLastRequestHeaderValue","addThrottling","X_MS_LIB_CAPABILITY","logoutHint","LOGOUT_HINT","createQueryString","queryParameterArray","configuration","authOptions","userAuthOptions","userSystemOptions","userLoggerOption","userCacheOptions","storageImplementation","networkImplementation","cryptoImplementation","clientCredentials","telemetry","persistencePlugin","serializableCache","azureCloudOptions","skipAuthorityMetadataCache","systemOptions","cacheOptions","storageInterface","networkInterface","cryptoInterface","buildClientConfiguration","networkManager","ccsCred","CONTENT_TYPE","clearTelemetryCache","updatedAuthority","discoveryComplete","createEndpointDiscoveryIncompleteError","parameterBuilder","tokenQueryParameters","addExtraQueryParameters","appMetadataEntity","PopTokenGenerateCnf","PopTokenGenerateKid","generateKid","reqCnf","reqCnfString","reqCnfHash","xms_ksl","SW","signPopToken","signPayload","shrNonce","resourceUrlString","resourceUrlComponents","client_claims","tokenCache","cacheStorage","validateServerAuthorizationCodeResponse","serverResponseHash","createStateNotFoundError","trace_id","correlation_id","client_info","serverResponse","errString","handleServerTokenResponse","serverTokenResponse","reqTimestamp","authCodePayload","handlingRefreshTokenResponse","forceCacheRefreshTokenResponse","serverRequestId","HandleServerTokenResponse","id_token","idTokenObj","auth_time","generateHomeAccountId","requestStateObj","key_id","generateCacheRecord","cacheContext","TokenCacheContext","beforeCacheAccess","saveCacheRecord","ResponseHandler","generateAuthenticationResult","afterCacheAccess","createIdTokenEntity","generateAccountEntity","access_token","responseScopes","expiresIn","expires_in","extExpiresIn","ext_expires_in","refreshIn","refresh_in","tokenExpirationSeconds","extendedTokenExpirationSeconds","refreshOnSeconds","token_type","refresh_token","foci","CacheRecord","cloud_graph_host_name","msGraphhost","msgraph_host","protocolMode","fromTokenCache","requestState","requestId","popTokenGenerator","spa_accountid","canonicalAuthority","fromCache","spa_code","fromNativeBroker","GetAuthCodeUrl","AuthClientCreateQueryString","createAuthCodeUrlQueryString","authorizationEndpoint","AuthClientAcquireToken","atsMeasurement","AuthClientExecuteTokenRequest","executeTokenRequest","X_MS_REQUEST_ID","httpVerAuthority","X_MS_HTTP_VERSION","responseHandler","validateTokenResponse","subErrorCode","handleFragmentResponse","hashFragment","serverParams","logoutRequest","createLogoutUrlQueryString","endSessionEndpoint","AuthClientCreateTokenRequestBody","queryParametersString","createTokenQueryParameters","createTokenRequestBody","requestBody","createTokenRequestHeaders","executePostToTokenEndpoint","addClientId","includeRedirectUri","addRedirectUri","addAuthorizationCode","addLibraryInfo","addApplicationTelemetry","addServerTelemetry","addCodeVerifier","addClientSecret","addClientAssertion","assertion","addClientAssertionType","assertionType","addGrantType","AUTHORIZATION_CODE_GRANT","generateCnf","reqCnfData","addPopToken","sshJwk","addSshJwk","addCorrelationId","isEmptyObj","addCcsOid","addCcsUpn","tokenBodyParameters","enableSpaAuthorizationCode","RETURN_SPA_CODE","extraScopesToConsent","addResponseMode","addPrompt","addDomainHint","addSid","extractAccountSid","accountLoginHintClaim","extractLoginHint","addLoginHint","addNonce","addState","extraQueryParameters","nativeBroker","postLogoutRedirectUri","addPostLogoutRedirectUri","addIdTokenHint","addLogoutHint","login_hint","isOpenIdConfigResponse","EndpointMetadata","InstanceDiscoveryMetadata","NativeStatusCode","detectRegion","environmentRegion","regionDiscoveryMetadata","RegionDiscoveryDetectRegion","autodetectedRegionName","RegionDiscovery","IMDS_OPTIONS","RegionDiscoveryGetRegionFromIMDS","getRegionFromIMDS","localIMDSVersionResponse","httpSuccess","region_source","IMDS","httpBadRequest","RegionDiscoveryGetCurrentVersion","getCurrentVersion","currentIMDSVersion","FAILED_AUTO_DETECTION","currentIMDSVersionResponse","ENVIRONMENT_VARIABLE","authorityOptions","_canonicalAuthority","region_used","region_outcome","regionDiscovery","authorityUri","Ciam","Default","getAuthorityType","canonicalAuthorityUrlComponents","_canonicalAuthorityUrlComponents","replacePath","Authority","reservedTenantDomains","AAD","cachedAuthorityUrlComponents","cachedAuthorityParts","currentPart","cachedPart","canReplaceTenant","replaceTenant","OIDC","resolveEndpointsAsync","AuthorityResolveEndpointsAsync","metadataEntity","hostnameAndPort","updateCanonicalAuthority","AuthorityUpdateCloudDiscoveryMetadata","cloudDiscoverySource","AuthorityUpdateEndpointMetadata","endpointSource","CACHE","generateAuthorityMetadataCacheKey","getEndpointMetadataFromConfig","CONFIG","isAuthoritySameType","AuthorityGetEndpointMetadataFromNetwork","getEndpointMetadataFromNetwork","azureRegionConfiguration","azureRegion","AuthorityUpdateMetadataWithRegionalInformation","updateMetadataWithRegionalInformation","NETWORK","harcodedMetadata","getEndpointMetadataFromHardcodedValues","HARDCODED_VALUES","createUnableToGetOpenidConfigError","defaultOpenIdConfigurationEndpoint","authorityMetadata","userConfiguredAzureRegion","CONFIGURED_NO_AUTO_DETECTION","replaceWithRegionalInformation","AUTO_DETECTION_REQUESTED_SUCCESSFUL","AUTO_DETECTION_REQUESTED_FAILED","knownAuthorities","getCloudDiscoveryMetadataFromConfig","metadataEntityExpired","AuthorityGetCloudDiscoveryMetadataFromNetwork","getCloudDiscoveryMetadataFromNetwork","getCloudDiscoveryMetadataFromHarcodedValues","createCloudDiscoveryMetadataFromHost","cloudDiscoveryMetadata","parsedResponse","getCloudDiscoveryMetadataFromNetworkResponse","isInKnownAuthorities","instanceDiscoveryEndpoint","typedResponseBody","isCloudInstanceDiscoveryResponse","tenant_discovery_endpoint","isCloudInstanceDiscoveryErrorResponse","typedError","getDomainFromUrl","generateAuthority","authorityString","authorityAzureCloudInstance","buildRegionalAuthorityString","authorityUrlInstance","authorityUrlParts","hostNameAndPort","isPublicCloudAuthority","ciamAuthority","authorityUrlComponents","CONSUMERS","createDiscoveredInstance","AuthorityFactoryCreateDiscoveredInstance","authorityUriFinal","transformCIAMAuthority","acquireTokenAuthority","AuthorityFactory","createInstance","authorityUrl","telemetryRequest","cacheOutcome","NO_CACHE_HIT","apiId","wrapperVer","telemetryCacheKey","platformFields","requestWithRegionDiscoveryFields","getRegionDiscoveryFields","lastRequests","getLastRequests","maxErrors","ServerTelemetryManager","maxErrorsToSend","errorCount","incrementCacheHits","numErrorsFlushed","serverTelemEntity","serverTelemetryEntity","dataSize","regionDiscoveryFields","regionUsed","regionSource","regionOutcome","storageImpl","navigationClient","nativeMessageHandler","clearCacheOnLogout","initializeBaseRequest","InitializeBaseRequest","validateRequestAuthority","validatedRequest","getRedirectUri","requestRedirectUri","getDiscoveredAuthority","isAlias","initializeServerTelemetryManager","telemetryPayload","requestAuthority","initializeAuthorizationCodeRequest","StandardInteractionClientInitializeAuthorizationCodeRequest","generatedPkceParams","initializeLogoutRequest","validLogoutRequest","getLogoutHintFromIdTokenClaims","createAuthCodeClient","requestAzureCloudOptions","StandardInteractionClientCreateAuthCodeClient","StandardInteractionClientGetClientConfiguration","getClientConfiguration","clientConfig","StandardInteractionClientGetDiscoveredAuthority","discoveredAuthority","validateAndExtractStateFromHash","requestCorrelationId","platformStateObj","getAuthorityMeasurement","userAuthority","builtAuthority","initializeAuthorizationRequest","StandardInteractionClientInitializeAuthorizationRequest","browserState","FRAGMENT","legacyLoginHint","NativeAuthErrorMessage","NativeAuthError","isFatal","PERSISTENT_ERROR","DISABLED","createError","ACCOUNT_UNAVAILABLE","USER_INTERACTION_REQUIRED","USER_CANCEL","NO_NETWORK","createUserSwitchError","createTokensNotFoundInCacheError","RefreshTokenClientAcquireToken","RefreshTokenClientExecuteTokenRequest","httpVerToken","refreshTokenSize","forceCache","RefreshTokenClientAcquireTokenByRefreshToken","isAppMetadataFOCI","RefreshTokenClientAcquireTokenWithCachedRefreshToken","acquireTokenWithCachedRefreshToken","noFamilyRTInCache","clientMismatchErrorWithFamilyRT","refreshTokenRequest","acquireTokenMeasurement","RefreshTokenClientCreateTokenRequestBody","BaseClientCreateTokenRequestHeaders","REFRESH_TOKEN_GRANT","addRefreshToken","acquireCachedToken","acquireTokenByRefreshToken","setCacheOutcome","FORCE_REFRESH","CLAIMS_REQUESTED_CACHE_SKIPPED","NO_CACHED_ACCESS_TOKEN","wasClockTurnedBack","CACHED_ACCESS_TOKEN_EXPIRED","REFRESH_CACHED_ACCESS_TOKEN","generateResultFromCacheRecord","silentRequest","SilentCacheClientAcquireToken","acquireTokenSilent_silentFlow","createSilentFlowClient","silentAuthClient","cachedToken","initializeSilentRequest","InitializeSilentRequest","provider","nativeStorageImpl","nativeStorageManager","silentCacheClient","nativeATMeasurement","NativeInteractionClientAcquireToken","initializeNativeRequest","nativeRequest","acquireTokensFromCache","isNativeBroker","messageBody","GetToken","sendMessage","validatedResponse","validateNativeResponse","handleNativeResponse","createSilentCacheRequest","getAccountInfoFilteredBy","navigationOptions","redirectNavigationTimeout","navigateToLoginRequestUrl","authorityPreferredCache","createIdTokenObj","createHomeAccountIdentifier","createAccountEntity","cacheAccount","cacheNativeTokens","generateScopes","generatePopAccessToken","shr","shrParameters","mats","addTelemetryFromNativeResponse","accountProperties","responseAccessToken","isResponseFromCache","nativeCacheRecord","getMATSFromResponse","extensionId","getExtensionId","extensionVersion","getExtensionVersion","matsBrokerVersion","broker_version","matsAccountJoinOnStart","account_join_on_start","matsAccountJoinOnEnd","account_join_on_end","matsDeviceJoin","device_join","matsPromptBehavior","prompt_behavior","matsApiErrorCode","api_error_code","matsUiVisible","ui_visible","matsSilentCode","silent_code","matsSilentBiSubCode","silent_bi_sub_code","matsSilentMessage","silent_message","matsSilentStatus","silent_status","matsHttpStatus","http_status","matsHttpEventCount","http_event_count","MATS","is_cached","remainingProperties","appendScopes","getPrompt","windowTitleSubstring","extraParameters","extendedExpiryToken","handshakeTimeoutMs","resolvers","handshakeResolvers","responseId","messageChannel","windowListener","onWindowMessage","handshakeEvent","NativeMessageHandlerHandshake","createProvider","preferredProvider","NativeMessageHandler","sendHandshakeRequest","backupProvider","HandshakeRequest","extensionHandshakeTimeoutMs","onChannelMessage","extensionHandshakeTimedOut","handshakeResolver","extensionInstalled","Response","HandshakeResponse","isNativeAvailable","nativeExtensionProvider","authCodeModule","authModule","handleCodeResponseFromHash","networkModule","HandleCodeResponseFromHash","authCodeResponse","HandleCodeResponseFromServer","handleCodeResponseFromServer","validateNonce","nonceKey","cachedNonce","cloud_instance_host_name","UpdateTokenEndpointAuthority","updateTokenEndpointAuthority","cachedCcsCred","checkCcsCredentials","tokenResponse","cloudInstanceHostname","cloudInstanceAuthorityUri","cloudInstanceAuthority","updateAuthority","unloadWindow","nativeStorage","popupName","generatePopupName","popupWindowAttributes","asyncPopups","acquireTokenPopupAsync","openSizedPopup","generateLogoutPopupName","mainWindowRedirectUri","logoutPopupAsync","validRequest","authClient","fetchNativeAccountIdMeasurement","FetchAccountIdWithNativeBroker","getAuthCodeUrl","navigateUrl","interactionHandler","popupParameters","popupWindow","initiateAuthRequest","POPUP_OPENED","monitorPopupForHash","removeThrottle","nativeInteractionClient","setCorrelationId","cacheFailedRequest","logoutUri","getLogoutUri","LOGOUT_SUCCESS","openPopup","waitForLogoutPopup","LOGOUT_FAILURE","requestUrl","maxTicks","windowHashTimeout","pollIntervalMilliseconds","cleanPopup","urlNavigate","popupParams","currentWindow","winLeft","screenLeft","winTop","screenTop","winWidth","winHeight","popupSize","popupPosition","redirectStartPage","redirectTimeout","onRedirectNavigate","handleBackButton","persisted","getRedirectStartPage","responseHash","getRedirectResponseHash","loginRequestUrl","loginRequestUrlNormalized","removeHashFromUrl","currentUrlNormalized","handleHash","handleHashResult","processHashOnRedirect","homepage","cachedHash","currentAuthority","requestStartPage","navigateFrameWait","SilentHandlerInitiateAuthRequest","SilentHandlerLoadFrame","loadFrame","loadFrameSync","monitorIframeForHash","SilentHandlerMonitorIframeForHash","timeoutMark","removeHiddenIframe","contentHash","frameHandle","createHiddenIframe","authFrame","SilentIframeClientAcquireToken","SilentIframeClientTokenHelper","silentTokenHelper","silentHandler","msalFrame","iframeHashTimeout","SilentRefreshClientAcquireToken","createRefreshTokenClient","refreshTokenClient","loadExternalTokens","cacheRecordAccount","loadAccount","loadIdToken","loadAccessToken","loadRefreshToken","requestHomeAccountId","cloudInstanceHostName","BrowserPerformanceMeasurement","makeMeasureName","startMark","makeStartMark","endMark","makeEndMark","supportsBrowserPerformance","measure","clearMarks","clearMeasures","getEntriesByName","flushMeasurements","measurements","entriesForMeasurement","getPageVisibility","visibilityState","deleteIncompleteSubMeasurements","isRootEvent","incompleteMeasurements","supportsBrowserPerformanceNow","startPageVisibility","endPageVisibility","resQueueTime","astsAsyncMeasurement","activeSilentTokenRequests","trackPageVisibility","getRequestCorrelationId","AcquireTokenSilent","cacheLookupPolicy","preflightBrowserEnvironmentCheck","silentRequestKey","cachedResponse","AcquireTokenSilentAsync","acquireTokenSilentAsync","accessTokenSize","idTokenSize","visibilityChangeCount","acquireTokenNative","createSilentIframeClient","createSilentCacheClient","AcquireTokenFromCache","acquireTokenFromCache","cacheError","AccessToken","ACQUIRE_TOKEN_NETWORK_START","AcquireTokenByRefreshToken","refreshTokenError","isServerError","rtNotFound","isInvalidGrantError","AccessTokenAndRefreshToken","RefreshToken","Skip","AcquireTokenBySilentIframe","acquireTokenBySilentIframe","tokenRenewalError","userInputAuth","userInputCache","userInputSystem","userInputTelemetry","DEFAULT_AUTH_OPTIONS","DEFAULT_CACHE_OPTIONS","DEFAULT_LOGGER_OPTIONS","DEFAULT_BROWSER_SYSTEM_OPTIONS","loadFrameTimeout","nativeBrokerHandshakeTimeout","providedSystemOptions","DEFAULT_TELEMETRY_OPTIONS","buildConfiguration","redirectResponse","hybridAuthCodeResponses","DEFAULT_BROWSER_CACHE_MANAGER","nativeCacheOptions","nativeInternalStorage","trackPageVisibilityWithMeasurement","initMeasurement","InitializeClientApplication","INITIALIZE_START","claimsTokensRemovalMeasurement","ClearTokensAndKeysWithClaims","INITIALIZE_END","loggedInAccounts","redirectResponseKey","nativeClient","redirectClient","createRedirectClient","isLoggedIn","canUseNative","getNativeAccountId","atPopupMeasurement","AcquireTokenPopup","createPopupClient","ssoSilentMeasurement","acquireTokenByCodeAsyncMeasurement","silentIframeClient","ACQUIRE_TOKEN_BY_CODE_START","atbcMeasurement","AcquireTokenByCode","acquireTokenByCodeAsync","ACQUIRE_TOKEN_BY_CODE_SUCCESS","ACQUIRE_TOKEN_BY_CODE_FAILURE","AcquireTokenByCodeAsync","createSilentAuthCodeClient","commonRequest","RefreshTokenAndNetwork","silentRefreshClient","createSilentRefreshClient","preflightInteractiveRequest","partialObject","flattenWhenNode","unflattenActionCreators","flatActionCreators","unflatten","flatActionType","partialNestedActionCreators","partialFlatActionTypePath","nestedActionCreators","unprefixedType","createAction","payloadCreator","metaCreator","finalPayloadCreator","hasMeta","typeString","createActions","actionMap","identityActions","getLastElement","actionCreatorsFromIdentityActions","flatActionMap","flattenActionMap","actionMapToActionCreators","actionCreatorsFromActionMap","arrayToObject","partialActionCreators","actionMapValue","_actionMapValue$","isValidActionMapValue","prefixedType","partialActionMap","_objectSpread3","_objectSpread4","initialState","prevStateIsUndefined","valueIsUndefined","newState","hasOnlyInterfaceNames","ownKey","hasGeneratorInterface","handleActions","defaultState","flattenedReducerMap","flattenReducerMap","aReducer","throwReducer","actionType","handleAction","reduceReducers","attrRE","voidElement","tagMatch","comment","reg","tagRE","whitespaceRE","buff","inComponent","isOpen","isComment","nextChar","parseTag","rootEl","hasChildren","checkLength","getChildren","getAsArray","nodesToString","stringNode","childrenArray","keepArray","childIndex","childPropsCount","shouldKeepChild","childChildren","i18nIsDynamicList","renderNodes","targetString","combinedTOpts","shouldUnescape","emptyChildrenButNeedsHandling","childs","ast","HTML","renderInner","rootReactNode","mappedChildren","mapAST","hasValidReactChildren","pushTranslatedJSX","inner","mem","isVoid","dummy","reactNode","astNode","reactNodes","translationContent","newTarget","isValidTranslationWithChildren","isEmptyTransWithHTML","isKnownComponent","_inner","_inner3","_inner4","wrapTextNodes","_content","Trans","i18nKey","_ref$tOptions","tOptions","tFromProps","additionalProps","reactI18nextOptions","hashTransKey","interpolationOverride","useAsParent","defaultTransParent"],"mappings":"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","file":"static/js/2.2131d2f1.chunk.js","sourcesContent":["'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';\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","import '@redux-saga/symbols';\nimport '@babel/runtime/helpers/esm/extends';\nimport { channel, stringableFunc, func, notUndef } from '@redux-saga/is';\nimport { q as makeIterator, L as take, M as fork, N as cancel, O as call, Q as delay, U as actionChannel, V as sliding, W as race, c as check } from './io-22ea0cf9.js';\nexport { U as actionChannel, $ as all, a0 as apply, O as call, N as cancel, a5 as cancelled, a1 as cps, Q as delay, X as effectTypes, a6 as flush, M as fork, a7 as getContext, a3 as join, Z as put, _ as putResolve, W as race, a4 as select, a8 as setContext, a2 as spawn, L as take, Y as takeMaybe } from './io-22ea0cf9.js';\nimport '@redux-saga/delay-p';\n\nvar done = function done(value) {\n return {\n done: true,\n value: value\n };\n};\n\nvar qEnd = {};\nfunction safeName(patternOrChannel) {\n if (channel(patternOrChannel)) {\n return 'channel';\n }\n\n if (stringableFunc(patternOrChannel)) {\n return String(patternOrChannel);\n }\n\n if (func(patternOrChannel)) {\n return patternOrChannel.name;\n }\n\n return String(patternOrChannel);\n}\nfunction fsmIterator(fsm, startState, name) {\n var stateUpdater,\n errorState,\n effect,\n nextState = startState;\n\n function next(arg, error) {\n if (nextState === qEnd) {\n return done(arg);\n }\n\n if (error && !errorState) {\n nextState = qEnd;\n throw error;\n } else {\n stateUpdater && stateUpdater(arg);\n var currentState = error ? fsm[errorState](error) : fsm[nextState]();\n nextState = currentState.nextState;\n effect = currentState.effect;\n stateUpdater = currentState.stateUpdater;\n errorState = currentState.errorState;\n return nextState === qEnd ? done(arg) : effect;\n }\n }\n\n return makeIterator(next, function (error) {\n return next(null, error);\n }, name);\n}\n\nfunction takeEvery(patternOrChannel, worker) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var yTake = {\n done: false,\n value: take(patternOrChannel)\n };\n\n var yFork = function yFork(ac) {\n return {\n done: false,\n value: fork.apply(void 0, [worker].concat(args, [ac]))\n };\n };\n\n var action,\n setAction = function setAction(ac) {\n return action = ac;\n };\n\n return fsmIterator({\n q1: function q1() {\n return {\n nextState: 'q2',\n effect: yTake,\n stateUpdater: setAction\n };\n },\n q2: function q2() {\n return {\n nextState: 'q1',\n effect: yFork(action)\n };\n }\n }, 'q1', \"takeEvery(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nfunction takeLatest(patternOrChannel, worker) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var yTake = {\n done: false,\n value: take(patternOrChannel)\n };\n\n var yFork = function yFork(ac) {\n return {\n done: false,\n value: fork.apply(void 0, [worker].concat(args, [ac]))\n };\n };\n\n var yCancel = function yCancel(task) {\n return {\n done: false,\n value: cancel(task)\n };\n };\n\n var task, action;\n\n var setTask = function setTask(t) {\n return task = t;\n };\n\n var setAction = function setAction(ac) {\n return action = ac;\n };\n\n return fsmIterator({\n q1: function q1() {\n return {\n nextState: 'q2',\n effect: yTake,\n stateUpdater: setAction\n };\n },\n q2: function q2() {\n return task ? {\n nextState: 'q3',\n effect: yCancel(task)\n } : {\n nextState: 'q1',\n effect: yFork(action),\n stateUpdater: setTask\n };\n },\n q3: function q3() {\n return {\n nextState: 'q1',\n effect: yFork(action),\n stateUpdater: setTask\n };\n }\n }, 'q1', \"takeLatest(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nfunction takeLeading(patternOrChannel, worker) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var yTake = {\n done: false,\n value: take(patternOrChannel)\n };\n\n var yCall = function yCall(ac) {\n return {\n done: false,\n value: call.apply(void 0, [worker].concat(args, [ac]))\n };\n };\n\n var action;\n\n var setAction = function setAction(ac) {\n return action = ac;\n };\n\n return fsmIterator({\n q1: function q1() {\n return {\n nextState: 'q2',\n effect: yTake,\n stateUpdater: setAction\n };\n },\n q2: function q2() {\n return {\n nextState: 'q1',\n effect: yCall(action)\n };\n }\n }, 'q1', \"takeLeading(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nfunction throttle(delayLength, patternOrChannel, worker) {\n for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n\n var action, channel$1;\n\n var yTake = function yTake() {\n return {\n done: false,\n value: take(channel$1)\n };\n };\n\n var yFork = function yFork(ac) {\n return {\n done: false,\n value: fork.apply(void 0, [worker].concat(args, [ac]))\n };\n };\n\n var yDelay = {\n done: false,\n value: delay(delayLength)\n };\n\n var setAction = function setAction(ac) {\n return action = ac;\n };\n\n var setChannel = function setChannel(ch) {\n return channel$1 = ch;\n };\n\n var needsChannel = !channel(patternOrChannel);\n\n if (!needsChannel) {\n setChannel(patternOrChannel);\n }\n\n return fsmIterator({\n q1: function q1() {\n var yActionChannel = {\n done: false,\n value: actionChannel(patternOrChannel, sliding(1))\n };\n return {\n nextState: 'q2',\n effect: yActionChannel,\n stateUpdater: setChannel\n };\n },\n q2: function q2() {\n return {\n nextState: 'q3',\n effect: yTake(),\n stateUpdater: setAction\n };\n },\n q3: function q3() {\n return {\n nextState: 'q4',\n effect: yFork(action)\n };\n },\n q4: function q4() {\n return {\n nextState: 'q2',\n effect: yDelay\n };\n }\n }, needsChannel ? 'q1' : 'q2', \"throttle(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nfunction retry(maxTries, delayLength, fn) {\n var counter = maxTries;\n\n for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n\n var yCall = {\n done: false,\n value: call.apply(void 0, [fn].concat(args))\n };\n var yDelay = {\n done: false,\n value: delay(delayLength)\n };\n return fsmIterator({\n q1: function q1() {\n return {\n nextState: 'q2',\n effect: yCall,\n errorState: 'q10'\n };\n },\n q2: function q2() {\n return {\n nextState: qEnd\n };\n },\n q10: function q10(error) {\n counter -= 1;\n\n if (counter <= 0) {\n throw error;\n }\n\n return {\n nextState: 'q1',\n effect: yDelay\n };\n }\n }, 'q1', \"retry(\" + fn.name + \")\");\n}\n\nfunction debounceHelper(delayLength, patternOrChannel, worker) {\n for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n\n var action, raceOutput;\n var yTake = {\n done: false,\n value: take(patternOrChannel)\n };\n var yRace = {\n done: false,\n value: race({\n action: take(patternOrChannel),\n debounce: delay(delayLength)\n })\n };\n\n var yFork = function yFork(ac) {\n return {\n done: false,\n value: fork.apply(void 0, [worker].concat(args, [ac]))\n };\n };\n\n var yNoop = function yNoop(value) {\n return {\n done: false,\n value: value\n };\n };\n\n var setAction = function setAction(ac) {\n return action = ac;\n };\n\n var setRaceOutput = function setRaceOutput(ro) {\n return raceOutput = ro;\n };\n\n return fsmIterator({\n q1: function q1() {\n return {\n nextState: 'q2',\n effect: yTake,\n stateUpdater: setAction\n };\n },\n q2: function q2() {\n return {\n nextState: 'q3',\n effect: yRace,\n stateUpdater: setRaceOutput\n };\n },\n q3: function q3() {\n return raceOutput.debounce ? {\n nextState: 'q1',\n effect: yFork(action)\n } : {\n nextState: 'q2',\n effect: yNoop(raceOutput.action),\n stateUpdater: setAction\n };\n }\n }, 'q1', \"debounce(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nvar validateTakeEffect = function validateTakeEffect(fn, patternOrChannel, worker) {\n check(patternOrChannel, notUndef, fn.name + \" requires a pattern or channel\");\n check(worker, notUndef, fn.name + \" requires a saga parameter\");\n};\n\nfunction takeEvery$1(patternOrChannel, worker) {\n if (process.env.NODE_ENV !== 'production') {\n validateTakeEffect(takeEvery$1, patternOrChannel, worker);\n }\n\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n return fork.apply(void 0, [takeEvery, patternOrChannel, worker].concat(args));\n}\nfunction takeLatest$1(patternOrChannel, worker) {\n if (process.env.NODE_ENV !== 'production') {\n validateTakeEffect(takeLatest$1, patternOrChannel, worker);\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n return fork.apply(void 0, [takeLatest, patternOrChannel, worker].concat(args));\n}\nfunction takeLeading$1(patternOrChannel, worker) {\n if (process.env.NODE_ENV !== 'production') {\n validateTakeEffect(takeLeading$1, patternOrChannel, worker);\n }\n\n for (var _len3 = arguments.length, args = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n args[_key3 - 2] = arguments[_key3];\n }\n\n return fork.apply(void 0, [takeLeading, patternOrChannel, worker].concat(args));\n}\nfunction throttle$1(ms, patternOrChannel, worker) {\n if (process.env.NODE_ENV !== 'production') {\n check(patternOrChannel, notUndef, \"throttle requires a pattern or channel\");\n check(worker, notUndef, 'throttle requires a saga parameter');\n }\n\n for (var _len4 = arguments.length, args = new Array(_len4 > 3 ? _len4 - 3 : 0), _key4 = 3; _key4 < _len4; _key4++) {\n args[_key4 - 3] = arguments[_key4];\n }\n\n return fork.apply(void 0, [throttle, ms, patternOrChannel, worker].concat(args));\n}\nfunction retry$1(maxTries, delayLength, worker) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 3 ? _len5 - 3 : 0), _key5 = 3; _key5 < _len5; _key5++) {\n args[_key5 - 3] = arguments[_key5];\n }\n\n return call.apply(void 0, [retry, maxTries, delayLength, worker].concat(args));\n}\nfunction debounce(delayLength, pattern, worker) {\n for (var _len6 = arguments.length, args = new Array(_len6 > 3 ? _len6 - 3 : 0), _key6 = 3; _key6 < _len6; _key6++) {\n args[_key6 - 3] = arguments[_key6];\n }\n\n return fork.apply(void 0, [debounceHelper, delayLength, pattern, worker].concat(args));\n}\n\nexport { debounce, retry$1 as retry, takeEvery$1 as takeEvery, takeLatest$1 as takeLatest, takeLeading$1 as takeLeading, throttle$1 as throttle };\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 _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"],\n _excluded2 = [\"reactReduxForwardedRef\"];\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(function () {\n return effectFunc.apply(void 0, effectArgs);\n }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n selectorFactory is a func that is responsible for returning the selector function used to\r\n compute new props from state, props, and dispatch. For example:\r\n export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n thing: state.things[props.thingId],\r\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n }))(YourComponent)\r\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n if (process.env.NODE_ENV !== 'production') {\n if (renderCountProp !== undefined) {\n throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n }\n\n if (withRef) {\n throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n }\n\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';\n\n if (storeKey !== 'store') {\n throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n }\n }\n\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var reactReduxForwardedRef = props.reactReduxForwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n reactReduxForwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + \"or pass a custom React context provider to <Provider> and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n } // Based on the previous check, one of these must be true\n\n\n var store = didStoreComeFromProps ? props.store : contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n var subscription = createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = useMemo(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = useMemo(function () {\n return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }));\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = useMemo(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","function is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","export default function bindActionCreators(actionCreators, dispatch) {\n var boundActionCreators = {};\n\n var _loop = function _loop(key) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = function () {\n return dispatch(actionCreator.apply(void 0, arguments));\n };\n }\n };\n\n for (var key in actionCreators) {\n _loop(key);\n }\n\n return boundActionCreators;\n}","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\r\n connect is a facade over connectAdvanced. It turns its args into a compatible\r\n selectorFactory, which has the signature:\r\n\r\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n \r\n connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n selectorFactory returns a final props selector from its mapStateToProps,\r\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n mergePropsFactories, and pure args.\r\n\r\n The resulting final props selector is called by the Connect component instance whenever\r\n it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default /*#__PURE__*/createConnect();","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 <div>{store.getState()}</div>\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 <Provider>');\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 `<Provider>`.\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 <div>{store.getState()}</div>\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 `<Provider>`.\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 * <div>\r\n * <span>{value}</span>\r\n * <button onClick={increaseCounter}>Increase counter</button>\r\n * </div>\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 `<Provider>`.\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 <div>{counter}</div>\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 };","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nexport const Constants = {\r\n LIBRARY_NAME: \"MSAL.JS\",\r\n SKU: \"msal.js.common\",\r\n // Prefix for all library cache entries\r\n CACHE_PREFIX: \"msal\",\r\n // default authority\r\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\r\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\r\n DEFAULT_COMMON_TENANT: \"common\",\r\n // ADFS String\r\n ADFS: \"adfs\",\r\n DSTS: \"dstsv2\",\r\n // Default AAD Instance Discovery Endpoint\r\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\r\n // CIAM URL\r\n CIAM_AUTH_URL: \".ciamlogin.com\",\r\n AAD_TENANT_DOMAIN_SUFFIX: \".onmicrosoft.com\",\r\n // Resource delimiter - used for certain cache entries\r\n RESOURCE_DELIM: \"|\",\r\n // Placeholder for non-existent account ids/objects\r\n NO_ACCOUNT: \"NO_ACCOUNT\",\r\n // Claims\r\n CLAIMS: \"claims\",\r\n // Consumer UTID\r\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\r\n // Default scopes\r\n OPENID_SCOPE: \"openid\",\r\n PROFILE_SCOPE: \"profile\",\r\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\r\n EMAIL_SCOPE: \"email\",\r\n // Default response type for authorization code flow\r\n CODE_RESPONSE_TYPE: \"code\",\r\n CODE_GRANT_TYPE: \"authorization_code\",\r\n RT_GRANT_TYPE: \"refresh_token\",\r\n FRAGMENT_RESPONSE_MODE: \"fragment\",\r\n S256_CODE_CHALLENGE_METHOD: \"S256\",\r\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n NOT_DEFINED: \"not_defined\",\r\n EMPTY_STRING: \"\",\r\n NOT_APPLICABLE: \"N/A\",\r\n FORWARD_SLASH: \"/\",\r\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\r\n IMDS_VERSION: \"2020-06-01\",\r\n IMDS_TIMEOUT: 2000,\r\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\r\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\r\n REGIONAL_AUTH_NON_MSI_QUERY_STRING: \"allowestsrnonmsi=true\",\r\n KNOWN_PUBLIC_CLOUDS: [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"],\r\n TOKEN_RESPONSE_TYPE: \"token\",\r\n ID_TOKEN_RESPONSE_TYPE: \"id_token\",\r\n SHR_NONCE_VALIDITY: 240,\r\n INVALID_INSTANCE: \"invalid_instance\",\r\n};\r\n\r\nexport const OIDC_DEFAULT_SCOPES = [\r\n Constants.OPENID_SCOPE,\r\n Constants.PROFILE_SCOPE,\r\n Constants.OFFLINE_ACCESS_SCOPE\r\n];\r\n\r\nexport const OIDC_SCOPES = [\r\n ...OIDC_DEFAULT_SCOPES,\r\n Constants.EMAIL_SCOPE\r\n];\r\n\r\n/**\r\n * Request header names\r\n */\r\nexport enum HeaderNames {\r\n CONTENT_TYPE = \"Content-Type\",\r\n RETRY_AFTER = \"Retry-After\",\r\n CCS_HEADER = \"X-AnchorMailbox\",\r\n WWWAuthenticate = \"WWW-Authenticate\",\r\n AuthenticationInfo = \"Authentication-Info\",\r\n X_MS_REQUEST_ID = \"x-ms-request-id\",\r\n X_MS_HTTP_VERSION= \"x-ms-httpver\"\r\n}\r\n\r\n/**\r\n * Persistent cache keys MSAL which stay while user is logged in.\r\n */\r\nexport enum PersistentCacheKeys {\r\n ID_TOKEN = \"idtoken\",\r\n CLIENT_INFO = \"client.info\",\r\n ADAL_ID_TOKEN = \"adal.idtoken\",\r\n ERROR = \"error\",\r\n ERROR_DESC = \"error.description\",\r\n ACTIVE_ACCOUNT = \"active-account\", // Legacy active-account cache key, use new key instead\r\n ACTIVE_ACCOUNT_FILTERS = \"active-account-filters\" // new cache entry for active_account for a more robust version for browser\r\n}\r\n\r\n/**\r\n * String constants related to AAD Authority\r\n */\r\nexport enum AADAuthorityConstants {\r\n COMMON = \"common\",\r\n ORGANIZATIONS = \"organizations\",\r\n CONSUMERS = \"consumers\"\r\n}\r\n\r\n/**\r\n * Keys in the hashParams sent by AAD Server\r\n */\r\nexport enum AADServerParamKeys {\r\n CLIENT_ID = \"client_id\",\r\n REDIRECT_URI = \"redirect_uri\",\r\n RESPONSE_TYPE = \"response_type\",\r\n RESPONSE_MODE = \"response_mode\",\r\n GRANT_TYPE = \"grant_type\",\r\n CLAIMS = \"claims\",\r\n SCOPE = \"scope\",\r\n ERROR = \"error\",\r\n ERROR_DESCRIPTION = \"error_description\",\r\n ACCESS_TOKEN = \"access_token\",\r\n ID_TOKEN = \"id_token\",\r\n REFRESH_TOKEN = \"refresh_token\",\r\n EXPIRES_IN = \"expires_in\",\r\n STATE = \"state\",\r\n NONCE = \"nonce\",\r\n PROMPT = \"prompt\",\r\n SESSION_STATE = \"session_state\",\r\n CLIENT_INFO = \"client_info\",\r\n CODE = \"code\",\r\n CODE_CHALLENGE = \"code_challenge\",\r\n CODE_CHALLENGE_METHOD = \"code_challenge_method\",\r\n CODE_VERIFIER = \"code_verifier\",\r\n CLIENT_REQUEST_ID = \"client-request-id\",\r\n X_CLIENT_SKU = \"x-client-SKU\",\r\n X_CLIENT_VER = \"x-client-VER\",\r\n X_CLIENT_OS = \"x-client-OS\",\r\n X_CLIENT_CPU = \"x-client-CPU\",\r\n X_CLIENT_CURR_TELEM = \"x-client-current-telemetry\",\r\n X_CLIENT_LAST_TELEM = \"x-client-last-telemetry\",\r\n X_MS_LIB_CAPABILITY = \"x-ms-lib-capability\",\r\n X_APP_NAME = \"x-app-name\",\r\n X_APP_VER = \"x-app-ver\",\r\n POST_LOGOUT_URI = \"post_logout_redirect_uri\",\r\n ID_TOKEN_HINT = \"id_token_hint\",\r\n DEVICE_CODE = \"device_code\",\r\n CLIENT_SECRET = \"client_secret\",\r\n CLIENT_ASSERTION = \"client_assertion\",\r\n CLIENT_ASSERTION_TYPE = \"client_assertion_type\",\r\n TOKEN_TYPE = \"token_type\",\r\n REQ_CNF = \"req_cnf\",\r\n OBO_ASSERTION = \"assertion\",\r\n REQUESTED_TOKEN_USE = \"requested_token_use\",\r\n ON_BEHALF_OF = \"on_behalf_of\",\r\n FOCI = \"foci\",\r\n CCS_HEADER = \"X-AnchorMailbox\",\r\n RETURN_SPA_CODE = \"return_spa_code\",\r\n NATIVE_BROKER = \"nativebroker\",\r\n LOGOUT_HINT = \"logout_hint\"\r\n}\r\n\r\n/**\r\n * Claims request keys\r\n */\r\nexport enum ClaimsRequestKeys {\r\n ACCESS_TOKEN = \"access_token\",\r\n XMS_CC = \"xms_cc\"\r\n}\r\n\r\n/**\r\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\r\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\r\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\r\n */\r\nexport const PromptValue = {\r\n LOGIN: \"login\",\r\n SELECT_ACCOUNT: \"select_account\",\r\n CONSENT: \"consent\",\r\n NONE: \"none\",\r\n CREATE: \"create\",\r\n NO_SESSION: \"no_session\"\r\n};\r\n\r\n/**\r\n * SSO Types - generated to populate hints\r\n */\r\nexport enum SSOTypes {\r\n ACCOUNT = \"account\",\r\n SID = \"sid\",\r\n LOGIN_HINT = \"login_hint\",\r\n ID_TOKEN = \"id_token\",\r\n DOMAIN_HINT = \"domain_hint\",\r\n ORGANIZATIONS = \"organizations\",\r\n CONSUMERS = \"consumers\",\r\n ACCOUNT_ID = \"accountIdentifier\",\r\n HOMEACCOUNT_ID = \"homeAccountIdentifier\"\r\n}\r\n\r\n/**\r\n * allowed values for codeVerifier\r\n */\r\nexport const CodeChallengeMethodValues = {\r\n PLAIN: \"plain\",\r\n S256: \"S256\"\r\n};\r\n\r\n/**\r\n * The method used to encode the code verifier for the code challenge parameter. can be one\r\n * of plain or s256. if excluded, code challenge is assumed to be plaintext. for more\r\n * information, see the pkce rcf: https://tools.ietf.org/html/rfc7636\r\n */\r\nexport const CodeChallengeMethodValuesArray: string[] = [\r\n CodeChallengeMethodValues.PLAIN,\r\n CodeChallengeMethodValues.S256\r\n];\r\n\r\n/**\r\n * allowed values for response_mode\r\n */\r\nexport enum ResponseMode {\r\n QUERY = \"query\",\r\n FRAGMENT = \"fragment\",\r\n FORM_POST = \"form_post\"\r\n}\r\n\r\n/**\r\n * allowed grant_type\r\n */\r\nexport enum GrantType {\r\n IMPLICIT_GRANT = \"implicit\",\r\n AUTHORIZATION_CODE_GRANT = \"authorization_code\",\r\n CLIENT_CREDENTIALS_GRANT = \"client_credentials\",\r\n RESOURCE_OWNER_PASSWORD_GRANT = \"password\",\r\n REFRESH_TOKEN_GRANT = \"refresh_token\",\r\n DEVICE_CODE_GRANT = \"device_code\",\r\n JWT_BEARER = \"urn:ietf:params:oauth:grant-type:jwt-bearer\"\r\n}\r\n\r\n/**\r\n * Account types in Cache\r\n */\r\nexport enum CacheAccountType {\r\n MSSTS_ACCOUNT_TYPE = \"MSSTS\",\r\n ADFS_ACCOUNT_TYPE = \"ADFS\",\r\n MSAV1_ACCOUNT_TYPE = \"MSA\",\r\n GENERIC_ACCOUNT_TYPE = \"Generic\" // NTLM, Kerberos, FBA, Basic etc\r\n}\r\n\r\n/**\r\n * Separators used in cache\r\n */\r\nexport enum Separators {\r\n CACHE_KEY_SEPARATOR = \"-\",\r\n CLIENT_INFO_SEPARATOR = \".\"\r\n}\r\n\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nexport enum CredentialType {\r\n ID_TOKEN = \"IdToken\",\r\n ACCESS_TOKEN = \"AccessToken\",\r\n ACCESS_TOKEN_WITH_AUTH_SCHEME = \"AccessToken_With_AuthScheme\",\r\n REFRESH_TOKEN = \"RefreshToken\",\r\n}\r\n\r\n/**\r\n * Combine all cache types\r\n */\r\nexport enum CacheType {\r\n ADFS = 1001,\r\n MSA = 1002,\r\n MSSTS = 1003,\r\n GENERIC = 1004,\r\n ACCESS_TOKEN = 2001,\r\n REFRESH_TOKEN = 2002,\r\n ID_TOKEN = 2003,\r\n APP_METADATA = 3001,\r\n UNDEFINED = 9999\r\n}\r\n\r\n/**\r\n * More Cache related constants\r\n */\r\nexport const APP_METADATA = \"appmetadata\";\r\nexport const CLIENT_INFO = \"client_info\";\r\nexport const THE_FAMILY_ID = \"1\";\r\n\r\nexport const AUTHORITY_METADATA_CONSTANTS = {\r\n CACHE_KEY: \"authority-metadata\",\r\n REFRESH_TIME_SECONDS: 3600 * 24 // 24 Hours\r\n};\r\n\r\nexport enum AuthorityMetadataSource {\r\n CONFIG = \"config\",\r\n CACHE = \"cache\",\r\n NETWORK = \"network\",\r\n HARDCODED_VALUES= \"hardcoded_values\",\r\n}\r\n\r\nexport const SERVER_TELEM_CONSTANTS = {\r\n SCHEMA_VERSION: 5,\r\n MAX_CUR_HEADER_BYTES: 80, // ESTS limit is 100B, set to 80 to provide a 20B buffer\r\n MAX_LAST_HEADER_BYTES: 330, // ESTS limit is 350B, set to 330 to provide a 20B buffer,\r\n MAX_CACHED_ERRORS: 50, // Limit the number of errors that can be stored to prevent uncontrolled size gains\r\n CACHE_KEY: \"server-telemetry\",\r\n CATEGORY_SEPARATOR: \"|\",\r\n VALUE_SEPARATOR: \",\",\r\n OVERFLOW_TRUE: \"1\",\r\n OVERFLOW_FALSE: \"0\",\r\n UNKNOWN_ERROR: \"unknown_error\"\r\n};\r\n\r\n/**\r\n * Type of the authentication request\r\n */\r\nexport enum AuthenticationScheme {\r\n BEARER = \"Bearer\",\r\n POP = \"pop\",\r\n SSH = \"ssh-cert\"\r\n}\r\n\r\n/**\r\n * Constants related to throttling\r\n */\r\nexport const ThrottlingConstants = {\r\n // Default time to throttle RequestThumbprint in seconds\r\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\r\n // Default maximum time to throttle in seconds, overrides what the server sends back\r\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\r\n // Prefix for storing throttling entries\r\n THROTTLING_PREFIX: \"throttling\",\r\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\r\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\"\r\n};\r\n\r\nexport const Errors = {\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\r\n};\r\n\r\n/**\r\n * Password grant parameters\r\n */\r\nexport enum PasswordGrantConstants {\r\n username = \"username\",\r\n password = \"password\"\r\n}\r\n\r\n/**\r\n * Response codes\r\n */\r\nexport enum ResponseCodes {\r\n httpSuccess = 200,\r\n httpBadRequest = 400\r\n}\r\n\r\n/**\r\n * Region Discovery Sources\r\n */\r\nexport enum RegionDiscoverySources {\r\n FAILED_AUTO_DETECTION = \"1\",\r\n INTERNAL_CACHE = \"2\",\r\n ENVIRONMENT_VARIABLE = \"3\",\r\n IMDS = \"4\",\r\n}\r\n\r\n/**\r\n * Region Discovery Outcomes\r\n */\r\nexport enum RegionDiscoveryOutcomes {\r\n CONFIGURED_MATCHES_DETECTED = \"1\",\r\n CONFIGURED_NO_AUTO_DETECTION = \"2\",\r\n CONFIGURED_NOT_DETECTED = \"3\",\r\n AUTO_DETECTION_REQUESTED_SUCCESSFUL = \"4\",\r\n AUTO_DETECTION_REQUESTED_FAILED = \"5\"\r\n}\r\n\r\nexport enum CacheOutcome {\r\n NO_CACHE_HIT = \"0\",\r\n FORCE_REFRESH = \"1\",\r\n NO_CACHED_ACCESS_TOKEN = \"2\",\r\n CACHED_ACCESS_TOKEN_EXPIRED = \"3\",\r\n REFRESH_CACHED_ACCESS_TOKEN = \"4\",\r\n CLAIMS_REQUESTED_CACHE_SKIPPED = \"5\"\r\n}\r\n\r\nexport enum JsonTypes {\r\n Jwt = \"JWT\",\r\n Jwk = \"JWK\",\r\n Pop = \"pop\"\r\n}\r\n\r\nexport const ONE_DAY_IN_MS = 86400000;\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { OIDC_DEFAULT_SCOPES } from \"@azure/msal-common\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\n\r\n/**\r\n * Constants\r\n */\r\nexport const BrowserConstants = {\r\n /**\r\n * Interaction in progress cache value\r\n */\r\n INTERACTION_IN_PROGRESS_VALUE: \"interaction_in_progress\",\r\n /**\r\n * Invalid grant error code\r\n */\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n /**\r\n * Default popup window width\r\n */\r\n POPUP_WIDTH: 483,\r\n /**\r\n * Default popup window height\r\n */\r\n POPUP_HEIGHT: 600,\r\n /**\r\n * Name of the popup window starts with\r\n */\r\n POPUP_NAME_PREFIX: \"msal\",\r\n /**\r\n * Default popup monitor poll interval in milliseconds\r\n */\r\n DEFAULT_POLL_INTERVAL_MS: 30,\r\n /**\r\n * Msal-browser SKU\r\n */\r\n MSAL_SKU: \"msal.js.browser\",\r\n};\r\n\r\nexport const NativeConstants = {\r\n CHANNEL_ID: \"53ee284d-920a-4b59-9d30-a60315b26836\",\r\n PREFERRED_EXTENSION_ID: \"ppnbnpeolgkicgegkbkbjmhlideopiji\",\r\n MATS_TELEMETRY: \"MATS\"\r\n};\r\n\r\nexport enum NativeExtensionMethod {\r\n HandshakeRequest = \"Handshake\",\r\n HandshakeResponse = \"HandshakeResponse\",\r\n GetToken = \"GetToken\",\r\n Response = \"Response\"\r\n}\r\n\r\nexport enum BrowserCacheLocation {\r\n LocalStorage = \"localStorage\",\r\n SessionStorage = \"sessionStorage\",\r\n MemoryStorage = \"memoryStorage\"\r\n}\r\n\r\n/**\r\n * HTTP Request types supported by MSAL.\r\n */\r\nexport enum HTTP_REQUEST_TYPE {\r\n GET = \"GET\",\r\n POST = \"POST\"\r\n}\r\n\r\n/**\r\n * Temporary cache keys for MSAL, deleted after any request.\r\n */\r\nexport enum TemporaryCacheKeys {\r\n AUTHORITY = \"authority\",\r\n ACQUIRE_TOKEN_ACCOUNT = \"acquireToken.account\",\r\n SESSION_STATE = \"session.state\",\r\n REQUEST_STATE = \"request.state\",\r\n NONCE_IDTOKEN = \"nonce.id_token\",\r\n ORIGIN_URI = \"request.origin\",\r\n RENEW_STATUS = \"token.renew.status\",\r\n URL_HASH = \"urlHash\",\r\n REQUEST_PARAMS = \"request.params\",\r\n SCOPES = \"scopes\",\r\n INTERACTION_STATUS_KEY = \"interaction.status\",\r\n CCS_CREDENTIAL = \"ccs.credential\",\r\n CORRELATION_ID = \"request.correlationId\",\r\n NATIVE_REQUEST = \"request.native\",\r\n REDIRECT_CONTEXT = \"request.redirect.context\"\r\n}\r\n\r\nexport enum StaticCacheKeys {\r\n ACCOUNT_KEYS = \"msal.account.keys\",\r\n TOKEN_KEYS = \"msal.token.keys\"\r\n}\r\n\r\n/**\r\n * Cache keys stored in-memory\r\n */\r\nexport enum InMemoryCacheKeys {\r\n WRAPPER_SKU = \"wrapper.sku\",\r\n WRAPPER_VER = \"wrapper.version\"\r\n}\r\n\r\n/**\r\n * API Codes for Telemetry purposes. \r\n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\r\n * 0-99 Silent Flow\r\n * 800-899 Auth Code Flow\r\n */\r\nexport enum ApiId {\r\n acquireTokenRedirect = 861,\r\n acquireTokenPopup = 862,\r\n ssoSilent = 863,\r\n acquireTokenSilent_authCode = 864,\r\n handleRedirectPromise = 865,\r\n acquireTokenByCode = 866,\r\n acquireTokenSilent_silentFlow = 61,\r\n logout = 961,\r\n logoutPopup = 962\r\n}\r\n\r\n/*\r\n * Interaction type of the API - used for state and telemetry\r\n */\r\nexport enum InteractionType {\r\n Redirect = \"redirect\",\r\n Popup = \"popup\",\r\n Silent = \"silent\",\r\n None = \"none\"\r\n}\r\n\r\n/**\r\n * Types of interaction currently in progress.\r\n * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete.\r\n */\r\nexport enum InteractionStatus {\r\n /**\r\n * Initial status before interaction occurs\r\n */\r\n Startup = \"startup\",\r\n /**\r\n * Status set when all login calls occuring\r\n */\r\n Login = \"login\",\r\n /**\r\n * Status set when logout call occuring\r\n */ \r\n Logout = \"logout\",\r\n /**\r\n * Status set for acquireToken calls\r\n */\r\n AcquireToken = \"acquireToken\",\r\n /**\r\n * Status set for ssoSilent calls\r\n */\r\n SsoSilent = \"ssoSilent\",\r\n /**\r\n * Status set when handleRedirect in progress\r\n */\r\n HandleRedirect = \"handleRedirect\",\r\n /**\r\n * Status set when interaction is complete\r\n */\r\n None = \"none\"\r\n}\r\n\r\nexport const DEFAULT_REQUEST: RedirectRequest|PopupRequest = {\r\n scopes: OIDC_DEFAULT_SCOPES\r\n};\r\n\r\n/**\r\n * JWK Key Format string (Type MUST be defined for window crypto APIs)\r\n */\r\nexport const KEY_FORMAT_JWK = \"jwk\";\r\n\r\n// Supported wrapper SKUs\r\nexport enum WrapperSKU {\r\n React = \"@azure/msal-react\",\r\n Angular = \"@azure/msal-angular\"\r\n}\r\n\r\n// DatabaseStorage Constants\r\nexport const DB_NAME = \"msal.db\";\r\nexport const DB_VERSION = 1;\r\nexport const DB_TABLE_NAME = `${DB_NAME}.keys`;\r\n\r\nexport enum CacheLookupPolicy {\r\n /*\r\n * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired\r\n * or cannot be found the refresh token will be used to acquire a new one. Finally, if the refresh token\r\n * is expired acquireTokenSilent will attempt to acquire new access and refresh tokens.\r\n */\r\n Default = 0, // 0 is falsy, is equivalent to not passing in a CacheLookupPolicy\r\n /*\r\n * acquireTokenSilent will only look for access tokens in the cache. It will not attempt to renew access or\r\n * refresh tokens.\r\n */\r\n AccessToken = 1,\r\n /*\r\n * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired or\r\n * cannot be found, the refresh token will be used to acquire a new one. If the refresh token is expired, it\r\n * will not be renewed and acquireTokenSilent will fail.\r\n */\r\n AccessTokenAndRefreshToken = 2,\r\n /*\r\n * acquireTokenSilent will not attempt to retrieve access tokens from the cache and will instead attempt to\r\n * exchange the cached refresh token for a new access token. If the refresh token is expired, it will not be\r\n * renewed and acquireTokenSilent will fail.\r\n */\r\n RefreshToken = 3,\r\n /*\r\n * acquireTokenSilent will not look in the cache for the access token. It will go directly to network with the\r\n * cached refresh token. If the refresh token is expired an attempt will be made to renew it. This is equivalent to\r\n * setting \"forceRefresh: true\".\r\n */\r\n RefreshTokenAndNetwork = 4,\r\n /*\r\n * acquireTokenSilent will attempt to renew both access and refresh tokens. It will not look in the cache. This will\r\n * always fail if 3rd party cookies are blocked by the browser.\r\n */\r\n Skip = 5,\r\n}\r\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}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\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\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","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","import { TASK_CANCEL, TERMINATE, SAGA_LOCATION, SAGA_ACTION, IO, SELF_CANCELLATION } from '@redux-saga/symbols';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport { array, notUndef, pattern, multicast, channel, undef, effect, task, func, buffer, string, object } from '@redux-saga/is';\nimport delayP from '@redux-saga/delay-p';\n\nvar konst = function konst(v) {\n return function () {\n return v;\n };\n};\nvar kTrue =\n/*#__PURE__*/\nkonst(true);\n\nvar noop = function noop() {};\n\nif (process.env.NODE_ENV !== 'production' && typeof Proxy !== 'undefined') {\n noop =\n /*#__PURE__*/\n new Proxy(noop, {\n set: function set() {\n throw internalErr('There was an attempt to assign a property to internal `noop` function.');\n }\n });\n}\nvar identity = function identity(v) {\n return v;\n};\nvar hasSymbol = typeof Symbol === 'function';\nvar asyncIteratorSymbol = hasSymbol && Symbol.asyncIterator ? Symbol.asyncIterator : '@@asyncIterator';\nfunction check(value, predicate, error) {\n if (!predicate(value)) {\n throw new Error(error);\n }\n}\nvar assignWithSymbols = function assignWithSymbols(target, source) {\n _extends(target, source);\n\n if (Object.getOwnPropertySymbols) {\n Object.getOwnPropertySymbols(source).forEach(function (s) {\n target[s] = source[s];\n });\n }\n};\nvar flatMap = function flatMap(mapper, arr) {\n var _ref;\n\n return (_ref = []).concat.apply(_ref, arr.map(mapper));\n};\nfunction remove(array, item) {\n var index = array.indexOf(item);\n\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\nfunction once(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n\n called = true;\n fn();\n };\n}\n\nvar kThrow = function kThrow(err) {\n throw err;\n};\n\nvar kReturn = function kReturn(value) {\n return {\n value: value,\n done: true\n };\n};\n\nfunction makeIterator(next, thro, name) {\n if (thro === void 0) {\n thro = kThrow;\n }\n\n if (name === void 0) {\n name = 'iterator';\n }\n\n var iterator = {\n meta: {\n name: name\n },\n next: next,\n throw: thro,\n return: kReturn,\n isSagaIterator: true\n };\n\n if (typeof Symbol !== 'undefined') {\n iterator[Symbol.iterator] = function () {\n return iterator;\n };\n }\n\n return iterator;\n}\nfunction logError(error, _ref2) {\n var sagaStack = _ref2.sagaStack;\n\n /*eslint-disable no-console*/\n console.error(error);\n console.error(sagaStack);\n}\nvar internalErr = function internalErr(err) {\n return new Error(\"\\n redux-saga: Error checking hooks detected an inconsistent state. This is likely a bug\\n in redux-saga code and not yours. Thanks for reporting this in the project's github repo.\\n Error: \" + err + \"\\n\");\n};\nvar createSetContextWarning = function createSetContextWarning(ctx, props) {\n return (ctx ? ctx + '.' : '') + \"setContext(props): argument \" + props + \" is not a plain object\";\n};\nvar FROZEN_ACTION_ERROR = \"You can't put (a.k.a. dispatch from saga) frozen actions.\\nWe have to define a special non-enumerable property on those actions for scheduling purposes.\\nOtherwise you wouldn't be able to communicate properly between sagas & other subscribers (action ordering would become far less predictable).\\nIf you are using redux and you care about this behaviour (frozen actions),\\nthen you might want to switch to freezing actions in a middleware rather than in action creator.\\nExample implementation:\\n\\nconst freezeActions = store => next => action => next(Object.freeze(action))\\n\"; // creates empty, but not-holey array\n\nvar createEmptyArray = function createEmptyArray(n) {\n return Array.apply(null, new Array(n));\n};\nvar wrapSagaDispatch = function wrapSagaDispatch(dispatch) {\n return function (action) {\n if (process.env.NODE_ENV !== 'production') {\n check(action, function (ac) {\n return !Object.isFrozen(ac);\n }, FROZEN_ACTION_ERROR);\n }\n\n return dispatch(Object.defineProperty(action, SAGA_ACTION, {\n value: true\n }));\n };\n};\nvar shouldTerminate = function shouldTerminate(res) {\n return res === TERMINATE;\n};\nvar shouldCancel = function shouldCancel(res) {\n return res === TASK_CANCEL;\n};\nvar shouldComplete = function shouldComplete(res) {\n return shouldTerminate(res) || shouldCancel(res);\n};\nfunction createAllStyleChildCallbacks(shape, parentCallback) {\n var keys = Object.keys(shape);\n var totalCount = keys.length;\n\n if (process.env.NODE_ENV !== 'production') {\n check(totalCount, function (c) {\n return c > 0;\n }, 'createAllStyleChildCallbacks: get an empty array or object');\n }\n\n var completedCount = 0;\n var completed;\n var results = array(shape) ? createEmptyArray(totalCount) : {};\n var childCallbacks = {};\n\n function checkEnd() {\n if (completedCount === totalCount) {\n completed = true;\n parentCallback(results);\n }\n }\n\n keys.forEach(function (key) {\n var chCbAtKey = function chCbAtKey(res, isErr) {\n if (completed) {\n return;\n }\n\n if (isErr || shouldComplete(res)) {\n parentCallback.cancel();\n parentCallback(res, isErr);\n } else {\n results[key] = res;\n completedCount++;\n checkEnd();\n }\n };\n\n chCbAtKey.cancel = noop;\n childCallbacks[key] = chCbAtKey;\n });\n\n parentCallback.cancel = function () {\n if (!completed) {\n completed = true;\n keys.forEach(function (key) {\n return childCallbacks[key].cancel();\n });\n }\n };\n\n return childCallbacks;\n}\nfunction getMetaInfo(fn) {\n return {\n name: fn.name || 'anonymous',\n location: getLocation(fn)\n };\n}\nfunction getLocation(instrumented) {\n return instrumented[SAGA_LOCATION];\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\nvar BUFFER_OVERFLOW = \"Channel's Buffer overflow!\";\nvar ON_OVERFLOW_THROW = 1;\nvar ON_OVERFLOW_DROP = 2;\nvar ON_OVERFLOW_SLIDE = 3;\nvar ON_OVERFLOW_EXPAND = 4;\nvar zeroBuffer = {\n isEmpty: kTrue,\n put: noop,\n take: noop\n};\n\nfunction ringBuffer(limit, overflowAction) {\n if (limit === void 0) {\n limit = 10;\n }\n\n var arr = new Array(limit);\n var length = 0;\n var pushIndex = 0;\n var popIndex = 0;\n\n var push = function push(it) {\n arr[pushIndex] = it;\n pushIndex = (pushIndex + 1) % limit;\n length++;\n };\n\n var take = function take() {\n if (length != 0) {\n var it = arr[popIndex];\n arr[popIndex] = null;\n length--;\n popIndex = (popIndex + 1) % limit;\n return it;\n }\n };\n\n var flush = function flush() {\n var items = [];\n\n while (length) {\n items.push(take());\n }\n\n return items;\n };\n\n return {\n isEmpty: function isEmpty() {\n return length == 0;\n },\n put: function put(it) {\n if (length < limit) {\n push(it);\n } else {\n var doubledLimit;\n\n switch (overflowAction) {\n case ON_OVERFLOW_THROW:\n throw new Error(BUFFER_OVERFLOW);\n\n case ON_OVERFLOW_SLIDE:\n arr[pushIndex] = it;\n pushIndex = (pushIndex + 1) % limit;\n popIndex = pushIndex;\n break;\n\n case ON_OVERFLOW_EXPAND:\n doubledLimit = 2 * limit;\n arr = flush();\n length = arr.length;\n pushIndex = arr.length;\n popIndex = 0;\n arr.length = doubledLimit;\n limit = doubledLimit;\n push(it);\n break;\n\n default: // DROP\n\n }\n }\n },\n take: take,\n flush: flush\n };\n}\n\nvar none = function none() {\n return zeroBuffer;\n};\nvar fixed = function fixed(limit) {\n return ringBuffer(limit, ON_OVERFLOW_THROW);\n};\nvar dropping = function dropping(limit) {\n return ringBuffer(limit, ON_OVERFLOW_DROP);\n};\nvar sliding = function sliding(limit) {\n return ringBuffer(limit, ON_OVERFLOW_SLIDE);\n};\nvar expanding = function expanding(initialSize) {\n return ringBuffer(initialSize, ON_OVERFLOW_EXPAND);\n};\n\nvar buffers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n none: none,\n fixed: fixed,\n dropping: dropping,\n sliding: sliding,\n expanding: expanding\n});\n\nvar TAKE = 'TAKE';\nvar PUT = 'PUT';\nvar ALL = 'ALL';\nvar RACE = 'RACE';\nvar CALL = 'CALL';\nvar CPS = 'CPS';\nvar FORK = 'FORK';\nvar JOIN = 'JOIN';\nvar CANCEL = 'CANCEL';\nvar SELECT = 'SELECT';\nvar ACTION_CHANNEL = 'ACTION_CHANNEL';\nvar CANCELLED = 'CANCELLED';\nvar FLUSH = 'FLUSH';\nvar GET_CONTEXT = 'GET_CONTEXT';\nvar SET_CONTEXT = 'SET_CONTEXT';\n\nvar effectTypes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n TAKE: TAKE,\n PUT: PUT,\n ALL: ALL,\n RACE: RACE,\n CALL: CALL,\n CPS: CPS,\n FORK: FORK,\n JOIN: JOIN,\n CANCEL: CANCEL,\n SELECT: SELECT,\n ACTION_CHANNEL: ACTION_CHANNEL,\n CANCELLED: CANCELLED,\n FLUSH: FLUSH,\n GET_CONTEXT: GET_CONTEXT,\n SET_CONTEXT: SET_CONTEXT\n});\n\nvar TEST_HINT = '\\n(HINT: if you are getting these errors in tests, consider using createMockTask from @redux-saga/testing-utils)';\n\nvar makeEffect = function makeEffect(type, payload) {\n var _ref;\n\n return _ref = {}, _ref[IO] = true, _ref.combinator = false, _ref.type = type, _ref.payload = payload, _ref;\n};\n\nvar isForkEffect = function isForkEffect(eff) {\n return effect(eff) && eff.type === FORK;\n};\n\nvar detach = function detach(eff) {\n if (process.env.NODE_ENV !== 'production') {\n check(eff, isForkEffect, 'detach(eff): argument must be a fork effect');\n }\n\n return makeEffect(FORK, _extends({}, eff.payload, {\n detached: true\n }));\n};\nfunction take(patternOrChannel, multicastPattern) {\n if (patternOrChannel === void 0) {\n patternOrChannel = '*';\n }\n\n if (process.env.NODE_ENV !== 'production' && arguments.length) {\n check(arguments[0], notUndef, 'take(patternOrChannel): patternOrChannel is undefined');\n }\n\n if (pattern(patternOrChannel)) {\n if (notUndef(multicastPattern)) {\n /* eslint-disable no-console */\n console.warn(\"take(pattern) takes one argument but two were provided. Consider passing an array for listening to several action types\");\n }\n\n return makeEffect(TAKE, {\n pattern: patternOrChannel\n });\n }\n\n if (multicast(patternOrChannel) && notUndef(multicastPattern) && pattern(multicastPattern)) {\n return makeEffect(TAKE, {\n channel: patternOrChannel,\n pattern: multicastPattern\n });\n }\n\n if (channel(patternOrChannel)) {\n if (notUndef(multicastPattern)) {\n /* eslint-disable no-console */\n console.warn(\"take(channel) takes one argument but two were provided. Second argument is ignored.\");\n }\n\n return makeEffect(TAKE, {\n channel: patternOrChannel\n });\n }\n\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\"take(patternOrChannel): argument \" + patternOrChannel + \" is not valid channel or a valid pattern\");\n }\n}\nvar takeMaybe = function takeMaybe() {\n var eff = take.apply(void 0, arguments);\n eff.payload.maybe = true;\n return eff;\n};\nfunction put(channel$1, action) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n check(channel$1, notUndef, 'put(channel, action): argument channel is undefined');\n check(channel$1, channel, \"put(channel, action): argument \" + channel$1 + \" is not a valid channel\");\n check(action, notUndef, 'put(channel, action): argument action is undefined');\n } else {\n check(channel$1, notUndef, 'put(action): argument action is undefined');\n }\n }\n\n if (undef(action)) {\n action = channel$1; // `undefined` instead of `null` to make default parameter work\n\n channel$1 = undefined;\n }\n\n return makeEffect(PUT, {\n channel: channel$1,\n action: action\n });\n}\nvar putResolve = function putResolve() {\n var eff = put.apply(void 0, arguments);\n eff.payload.resolve = true;\n return eff;\n};\nfunction all(effects) {\n var eff = makeEffect(ALL, effects);\n eff.combinator = true;\n return eff;\n}\nfunction race(effects) {\n var eff = makeEffect(RACE, effects);\n eff.combinator = true;\n return eff;\n} // this match getFnCallDescriptor logic\n\nvar validateFnDescriptor = function validateFnDescriptor(effectName, fnDescriptor) {\n check(fnDescriptor, notUndef, effectName + \": argument fn is undefined or null\");\n\n if (func(fnDescriptor)) {\n return;\n }\n\n var context = null;\n var fn;\n\n if (array(fnDescriptor)) {\n context = fnDescriptor[0];\n fn = fnDescriptor[1];\n check(fn, notUndef, effectName + \": argument of type [context, fn] has undefined or null `fn`\");\n } else if (object(fnDescriptor)) {\n context = fnDescriptor.context;\n fn = fnDescriptor.fn;\n check(fn, notUndef, effectName + \": argument of type {context, fn} has undefined or null `fn`\");\n } else {\n check(fnDescriptor, func, effectName + \": argument fn is not function\");\n return;\n }\n\n if (context && string(fn)) {\n check(context[fn], func, effectName + \": context arguments has no such method - \\\"\" + fn + \"\\\"\");\n return;\n }\n\n check(fn, func, effectName + \": unpacked fn argument (from [context, fn] or {context, fn}) is not a function\");\n};\n\nfunction getFnCallDescriptor(fnDescriptor, args) {\n var context = null;\n var fn;\n\n if (func(fnDescriptor)) {\n fn = fnDescriptor;\n } else {\n if (array(fnDescriptor)) {\n context = fnDescriptor[0];\n fn = fnDescriptor[1];\n } else {\n context = fnDescriptor.context;\n fn = fnDescriptor.fn;\n }\n\n if (context && string(fn) && func(context[fn])) {\n fn = context[fn];\n }\n }\n\n return {\n context: context,\n fn: fn,\n args: args\n };\n}\n\nvar isNotDelayEffect = function isNotDelayEffect(fn) {\n return fn !== delay;\n};\n\nfunction call(fnDescriptor) {\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 if (process.env.NODE_ENV !== 'production') {\n var arg0 = typeof args[0] === 'number' ? args[0] : 'ms';\n check(fnDescriptor, isNotDelayEffect, \"instead of writing `yield call(delay, \" + arg0 + \")` where delay is an effect from `redux-saga/effects` you should write `yield delay(\" + arg0 + \")`\");\n validateFnDescriptor('call', fnDescriptor);\n }\n\n return makeEffect(CALL, getFnCallDescriptor(fnDescriptor, args));\n}\nfunction apply(context, fn, args) {\n if (args === void 0) {\n args = [];\n }\n\n var fnDescriptor = [context, fn];\n\n if (process.env.NODE_ENV !== 'production') {\n validateFnDescriptor('apply', fnDescriptor);\n }\n\n return makeEffect(CALL, getFnCallDescriptor([context, fn], args));\n}\nfunction cps(fnDescriptor) {\n if (process.env.NODE_ENV !== 'production') {\n validateFnDescriptor('cps', fnDescriptor);\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return makeEffect(CPS, getFnCallDescriptor(fnDescriptor, args));\n}\nfunction fork(fnDescriptor) {\n if (process.env.NODE_ENV !== 'production') {\n validateFnDescriptor('fork', fnDescriptor);\n check(fnDescriptor, function (arg) {\n return !effect(arg);\n }, 'fork: argument must not be an effect');\n }\n\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return makeEffect(FORK, getFnCallDescriptor(fnDescriptor, args));\n}\nfunction spawn(fnDescriptor) {\n if (process.env.NODE_ENV !== 'production') {\n validateFnDescriptor('spawn', fnDescriptor);\n }\n\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n return detach(fork.apply(void 0, [fnDescriptor].concat(args)));\n}\nfunction join(taskOrTasks) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n throw new Error('join(...tasks) is not supported any more. Please use join([...tasks]) to join multiple tasks.');\n }\n\n if (array(taskOrTasks)) {\n taskOrTasks.forEach(function (t) {\n check(t, task, \"join([...tasks]): argument \" + t + \" is not a valid Task object \" + TEST_HINT);\n });\n } else {\n check(taskOrTasks, task, \"join(task): argument \" + taskOrTasks + \" is not a valid Task object \" + TEST_HINT);\n }\n }\n\n return makeEffect(JOIN, taskOrTasks);\n}\nfunction cancel(taskOrTasks) {\n if (taskOrTasks === void 0) {\n taskOrTasks = SELF_CANCELLATION;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n throw new Error('cancel(...tasks) is not supported any more. Please use cancel([...tasks]) to cancel multiple tasks.');\n }\n\n if (array(taskOrTasks)) {\n taskOrTasks.forEach(function (t) {\n check(t, task, \"cancel([...tasks]): argument \" + t + \" is not a valid Task object \" + TEST_HINT);\n });\n } else if (taskOrTasks !== SELF_CANCELLATION && notUndef(taskOrTasks)) {\n check(taskOrTasks, task, \"cancel(task): argument \" + taskOrTasks + \" is not a valid Task object \" + TEST_HINT);\n }\n }\n\n return makeEffect(CANCEL, taskOrTasks);\n}\nfunction select(selector) {\n if (selector === void 0) {\n selector = identity;\n }\n\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n\n if (process.env.NODE_ENV !== 'production' && arguments.length) {\n check(arguments[0], notUndef, 'select(selector, [...]): argument selector is undefined');\n check(selector, func, \"select(selector, [...]): argument \" + selector + \" is not a function\");\n }\n\n return makeEffect(SELECT, {\n selector: selector,\n args: args\n });\n}\n/**\n channel(pattern, [buffer]) => creates a proxy channel for store actions\n**/\n\nfunction actionChannel(pattern$1, buffer$1) {\n if (process.env.NODE_ENV !== 'production') {\n check(pattern$1, pattern, 'actionChannel(pattern,...): argument pattern is not valid');\n\n if (arguments.length > 1) {\n check(buffer$1, notUndef, 'actionChannel(pattern, buffer): argument buffer is undefined');\n check(buffer$1, buffer, \"actionChannel(pattern, buffer): argument \" + buffer$1 + \" is not a valid buffer\");\n }\n }\n\n return makeEffect(ACTION_CHANNEL, {\n pattern: pattern$1,\n buffer: buffer$1\n });\n}\nfunction cancelled() {\n return makeEffect(CANCELLED, {});\n}\nfunction flush(channel$1) {\n if (process.env.NODE_ENV !== 'production') {\n check(channel$1, channel, \"flush(channel): argument \" + channel$1 + \" is not valid channel\");\n }\n\n return makeEffect(FLUSH, channel$1);\n}\nfunction getContext(prop) {\n if (process.env.NODE_ENV !== 'production') {\n check(prop, string, \"getContext(prop): argument \" + prop + \" is not a string\");\n }\n\n return makeEffect(GET_CONTEXT, prop);\n}\nfunction setContext(props) {\n if (process.env.NODE_ENV !== 'production') {\n check(props, object, createSetContextWarning(null, props));\n }\n\n return makeEffect(SET_CONTEXT, props);\n}\nvar delay =\n/*#__PURE__*/\ncall.bind(null, delayP);\n\nexport { all as $, ALL as A, compose as B, CALL as C, logError as D, wrapSagaDispatch as E, FORK as F, GET_CONTEXT as G, identity as H, buffers as I, JOIN as J, detach as K, take as L, fork as M, cancel as N, call as O, PUT as P, delay as Q, RACE as R, SELECT as S, TAKE as T, actionChannel as U, sliding as V, race as W, effectTypes as X, takeMaybe as Y, put as Z, putResolve as _, CPS as a, apply as a0, cps as a1, spawn as a2, join as a3, select as a4, cancelled as a5, flush as a6, getContext as a7, setContext as a8, CANCEL as b, check as c, ACTION_CHANNEL as d, expanding as e, CANCELLED as f, FLUSH as g, SET_CONTEXT as h, internalErr as i, getMetaInfo as j, kTrue as k, createAllStyleChildCallbacks as l, createEmptyArray as m, none as n, once as o, assignWithSymbols as p, makeIterator as q, remove as r, shouldComplete as s, noop as t, flatMap as u, getLocation as v, createSetContextWarning as w, asyncIteratorSymbol as x, shouldCancel as y, shouldTerminate as z };\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}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"./AuthError\";\r\n\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const ClientAuthErrorMessage = {\r\n clientInfoDecodingError: {\r\n code: \"client_info_decoding_error\",\r\n desc: \"The client info could not be parsed/decoded correctly. Please review the trace to determine the root cause.\"\r\n },\r\n clientInfoEmptyError: {\r\n code: \"client_info_empty_error\",\r\n desc: \"The client info was empty. Please review the trace to determine the root cause.\"\r\n },\r\n tokenParsingError: {\r\n code: \"token_parsing_error\",\r\n desc: \"Token cannot be parsed. Please review stack trace to determine root cause.\"\r\n },\r\n nullOrEmptyToken: {\r\n code: \"null_or_empty_token\",\r\n desc: \"The token is null or empty. Please review the trace to determine the root cause.\"\r\n },\r\n endpointResolutionError: {\r\n code: \"endpoints_resolution_error\",\r\n desc: \"Error: could not resolve endpoints. Please check network and try again.\"\r\n },\r\n networkError: {\r\n code: \"network_error\",\r\n desc: \"Network request failed. Please check network trace to determine root cause.\"\r\n },\r\n unableToGetOpenidConfigError: {\r\n code: \"openid_config_error\",\r\n desc: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\"\r\n },\r\n hashNotDeserialized: {\r\n code: \"hash_not_deserialized\",\r\n desc: \"The hash parameters could not be deserialized. Please review the trace to determine the root cause.\"\r\n },\r\n blankGuidGenerated: {\r\n code: \"blank_guid_generated\",\r\n desc: \"The guid generated was blank. Please review the trace to determine the root cause.\"\r\n },\r\n invalidStateError: {\r\n code: \"invalid_state\",\r\n desc: \"State was not the expected format. Please check the logs to determine whether the request was sent using ProtocolUtils.setRequestState().\"\r\n },\r\n stateMismatchError: {\r\n code: \"state_mismatch\",\r\n desc: \"State mismatch error. Please check your network. Continued requests may cause cache overflow.\"\r\n },\r\n stateNotFoundError: {\r\n code: \"state_not_found\",\r\n desc: \"State not found\"\r\n },\r\n nonceMismatchError: {\r\n code: \"nonce_mismatch\",\r\n desc: \"Nonce mismatch error. This may be caused by a race condition in concurrent requests.\"\r\n },\r\n nonceNotFoundError: {\r\n code: \"nonce_not_found\",\r\n desc: \"nonce not found\"\r\n },\r\n authTimeNotFoundError: {\r\n code: \"auth_time_not_found\",\r\n desc: \"Max Age was requested and the ID token is missing the auth_time variable.\" +\r\n \" auth_time is an optional claim and is not enabled by default - it must be enabled.\" +\r\n \" See https://aka.ms/msaljs/optional-claims for more information.\"\r\n },\r\n maxAgeTranspiredError: {\r\n code: \"max_age_transpired\",\r\n desc: \"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.\"\r\n },\r\n noTokensFoundError: {\r\n code: \"no_tokens_found\",\r\n desc: \"No tokens were found for the given scopes, and no authorization code was passed to acquireToken. You must retrieve an authorization code before making a call to acquireToken().\"\r\n },\r\n multipleMatchingTokens: {\r\n code: \"multiple_matching_tokens\",\r\n desc: \"The cache contains multiple tokens satisfying the requirements. \" +\r\n \"Call AcquireToken again providing more requirements such as authority or account.\"\r\n },\r\n multipleMatchingAccounts: {\r\n code: \"multiple_matching_accounts\",\r\n desc: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\"\r\n },\r\n multipleMatchingAppMetadata: {\r\n code: \"multiple_matching_appMetadata\",\r\n desc: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\"\r\n },\r\n tokenRequestCannotBeMade: {\r\n code: \"request_cannot_be_made\",\r\n desc: \"Token request cannot be made without authorization code or refresh token.\"\r\n },\r\n appendEmptyScopeError: {\r\n code: \"cannot_append_empty_scope\",\r\n desc: \"Cannot append null or empty scope to ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n removeEmptyScopeError: {\r\n code: \"cannot_remove_empty_scope\",\r\n desc: \"Cannot remove null or empty scope from ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n appendScopeSetError: {\r\n code: \"cannot_append_scopeset\",\r\n desc: \"Cannot append ScopeSet due to error.\"\r\n },\r\n emptyInputScopeSetError: {\r\n code: \"empty_input_scopeset\",\r\n desc: \"Empty input ScopeSet cannot be processed.\"\r\n },\r\n DeviceCodePollingCancelled: {\r\n code: \"device_code_polling_cancelled\",\r\n desc: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\"\r\n },\r\n DeviceCodeExpired: {\r\n code: \"device_code_expired\",\r\n desc: \"Device code is expired.\"\r\n },\r\n DeviceCodeUnknownError: {\r\n code: \"device_code_unknown_error\",\r\n desc: \"Device code stopped polling for unknown reasons.\"\r\n },\r\n NoAccountInSilentRequest: {\r\n code: \"no_account_in_silent_request\",\r\n desc: \"Please pass an account object, silent flow is not supported without account information\"\r\n },\r\n invalidCacheRecord: {\r\n code: \"invalid_cache_record\",\r\n desc: \"Cache record object was null or undefined.\"\r\n },\r\n invalidCacheEnvironment: {\r\n code: \"invalid_cache_environment\",\r\n desc: \"Invalid environment when attempting to create cache entry\"\r\n },\r\n noAccountFound: {\r\n code: \"no_account_found\",\r\n desc: \"No account found in cache for given key.\"\r\n },\r\n CachePluginError: {\r\n code: \"no cache plugin set on CacheManager\",\r\n desc: \"ICachePlugin needs to be set before using readFromStorage or writeFromStorage\"\r\n },\r\n noCryptoObj: {\r\n code: \"no_crypto_object\",\r\n desc: \"No crypto object detected. This is required for the following operation: \"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n unexpectedAccountType: {\r\n code: \"unexpected_account_type\",\r\n desc: \"Unexpected account type.\"\r\n },\r\n unexpectedCredentialType: {\r\n code: \"unexpected_credential_type\",\r\n desc: \"Unexpected credential type.\"\r\n },\r\n invalidAssertion: {\r\n code: \"invalid_assertion\",\r\n desc: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\"\r\n },\r\n invalidClientCredential: {\r\n code: \"invalid_client_credential\",\r\n desc: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\"\r\n },\r\n tokenRefreshRequired: {\r\n code: \"token_refresh_required\",\r\n desc: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\"\r\n },\r\n userTimeoutReached: {\r\n code: \"user_timeout_reached\",\r\n desc: \"User defined timeout for device code polling reached\",\r\n },\r\n tokenClaimsRequired: {\r\n code: \"token_claims_cnf_required_for_signedjwt\",\r\n desc: \"Cannot generate a POP jwt if the token_claims are not populated\"\r\n },\r\n noAuthorizationCodeFromServer: {\r\n code: \"authorization_code_missing_from_server_response\",\r\n desc: \"Server response does not contain an authorization code to proceed\"\r\n },\r\n noAzureRegionDetected: {\r\n code: \"no_azure_region_detected\",\r\n desc: \"No azure region was detected and no fallback was made available\"\r\n },\r\n accessTokenEntityNullError: {\r\n code: \"access_token_entity_null\",\r\n desc: \"Access token entity is null, please check logs and cache to ensure a valid access token is present.\"\r\n },\r\n bindingKeyNotRemovedError: {\r\n code: \"binding_key_not_removed\",\r\n desc: \"Could not remove the credential's binding key from storage.\"\r\n },\r\n logoutNotSupported: {\r\n code: \"end_session_endpoint_not_supported\",\r\n desc: \"Provided authority does not support logout.\"\r\n },\r\n keyIdMissing: {\r\n code: \"key_id_missing\",\r\n desc: \"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.\"\r\n },\r\n noNetworkConnectivity: {\r\n code: \"no_network_connectivity\",\r\n desc: \"No network connectivity. Check your internet connection.\"\r\n },\r\n userCanceledError: {\r\n code: \"user_canceled\",\r\n desc: \"User canceled the flow.\"\r\n }\r\n};\r\n\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nexport class ClientAuthError extends AuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n this.name = \"ClientAuthError\";\r\n\r\n Object.setPrototypeOf(this, ClientAuthError.prototype);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when client info object doesn't decode correctly.\r\n * @param caughtError\r\n */\r\n static createClientInfoDecodingError(caughtError: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoDecodingError.code,\r\n `${ClientAuthErrorMessage.clientInfoDecodingError.desc} Failed with error: ${caughtError}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if the client info is empty.\r\n * @param rawClientInfo\r\n */\r\n static createClientInfoEmptyError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoEmptyError.code,\r\n `${ClientAuthErrorMessage.clientInfoEmptyError.desc}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the id token extraction errors out.\r\n * @param err\r\n */\r\n static createTokenParsingError(caughtExtractionError: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenParsingError.code,\r\n `${ClientAuthErrorMessage.tokenParsingError.desc} Failed with error: ${caughtExtractionError}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the id token string is null or empty.\r\n * @param invalidRawTokenString\r\n */\r\n static createTokenNullOrEmptyError(invalidRawTokenString: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.nullOrEmptyToken.code,\r\n `${ClientAuthErrorMessage.nullOrEmptyToken.desc} Raw Token Value: ${invalidRawTokenString}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the endpoint discovery doesn't complete correctly.\r\n */\r\n static createEndpointDiscoveryIncompleteError(errDetail: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.endpointResolutionError.code,\r\n `${ClientAuthErrorMessage.endpointResolutionError.desc} Detail: ${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the fetch client throws\r\n */\r\n static createNetworkError(endpoint: string, errDetail: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.networkError.code,\r\n `${ClientAuthErrorMessage.networkError.desc} | Fetch client threw: ${errDetail} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the openid-configuration endpoint cannot be reached or does not contain the required data\r\n */\r\n static createUnableToGetOpenidConfigError(errDetail: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.unableToGetOpenidConfigError.code,\r\n `${ClientAuthErrorMessage.unableToGetOpenidConfigError.desc} Attempted to retrieve endpoints from: ${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash cannot be deserialized.\r\n * @param hashParamObj\r\n */\r\n static createHashNotDeserializedError(hashParamObj: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.hashNotDeserialized.code,\r\n `${ClientAuthErrorMessage.hashNotDeserialized.desc} Given Object: ${hashParamObj}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the state cannot be parsed.\r\n * @param invalidState\r\n */\r\n static createInvalidStateError(invalidState: string, errorString?: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidStateError.code,\r\n `${ClientAuthErrorMessage.invalidStateError.desc} Invalid State: ${invalidState}, Root Err: ${errorString}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when two states do not match.\r\n */\r\n static createStateMismatchError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateMismatchError.code,\r\n ClientAuthErrorMessage.stateMismatchError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the state is not present\r\n * @param missingState\r\n */\r\n static createStateNotFoundError(missingState: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateNotFoundError.code,\r\n `${ClientAuthErrorMessage.stateNotFoundError.desc}: ${missingState}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the nonce does not match.\r\n */\r\n static createNonceMismatchError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceMismatchError.code,\r\n ClientAuthErrorMessage.nonceMismatchError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when max_age was provided in the request, but auth_time is not in the token claims\r\n * @param missingNonce\r\n */\r\n static createAuthTimeNotFoundError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.authTimeNotFoundError.code,\r\n ClientAuthErrorMessage.authTimeNotFoundError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when too much time has elapsed since the last end-user authentication\r\n */\r\n static createMaxAgeTranspiredError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.maxAgeTranspiredError.code,\r\n ClientAuthErrorMessage.maxAgeTranspiredError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the mnonce is not present\r\n * @param missingNonce\r\n */\r\n static createNonceNotFoundError(missingNonce: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceNotFoundError.code,\r\n `${ClientAuthErrorMessage.nonceNotFoundError.desc}: ${missingNonce}`);\r\n }\r\n\r\n /**\r\n * Throws error when multiple tokens are in cache.\r\n */\r\n static createMultipleMatchingTokensInCacheError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingTokens.code,\r\n `${ClientAuthErrorMessage.multipleMatchingTokens.desc}.`);\r\n }\r\n\r\n /**\r\n * Throws error when multiple accounts are in cache for the given params\r\n */\r\n static createMultipleMatchingAccountsInCacheError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAccounts.code,\r\n ClientAuthErrorMessage.multipleMatchingAccounts.desc);\r\n }\r\n\r\n /**\r\n * Throws error when multiple appMetada are in cache for the given clientId.\r\n */\r\n static createMultipleMatchingAppMetadataInCacheError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAppMetadata.code,\r\n ClientAuthErrorMessage.multipleMatchingAppMetadata.desc);\r\n }\r\n\r\n /**\r\n * Throws error when no auth code or refresh token is given to ServerTokenRequestParameters.\r\n */\r\n static createTokenRequestCannotBeMadeError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRequestCannotBeMade.code, ClientAuthErrorMessage.tokenRequestCannotBeMade.desc);\r\n }\r\n\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n static createAppendEmptyScopeToSetError(givenScope: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendEmptyScopeError.code, `${ClientAuthErrorMessage.appendEmptyScopeError.desc} Given Scope: ${givenScope}`);\r\n }\r\n\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n static createRemoveEmptyScopeFromSetError(givenScope: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.removeEmptyScopeError.code, `${ClientAuthErrorMessage.removeEmptyScopeError.desc} Given Scope: ${givenScope}`);\r\n }\r\n\r\n /**\r\n * Throws error when attempting to append null or empty ScopeSet.\r\n * @param appendError\r\n */\r\n static createAppendScopeSetError(appendError: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendScopeSetError.code, `${ClientAuthErrorMessage.appendScopeSetError.desc} Detail Error: ${appendError}`);\r\n }\r\n\r\n /**\r\n * Throws error if ScopeSet is null or undefined.\r\n * @param givenScopeSet\r\n */\r\n static createEmptyInputScopeSetError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.emptyInputScopeSetError.code, `${ClientAuthErrorMessage.emptyInputScopeSetError.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if user sets CancellationToken.cancel = true during polling of token endpoint during device code flow\r\n */\r\n static createDeviceCodeCancelledError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodePollingCancelled.code, `${ClientAuthErrorMessage.DeviceCodePollingCancelled.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if device code is expired\r\n */\r\n static createDeviceCodeExpiredError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeExpired.code, `${ClientAuthErrorMessage.DeviceCodeExpired.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if device code is expired\r\n */\r\n static createDeviceCodeUnknownError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeUnknownError.code, `${ClientAuthErrorMessage.DeviceCodeUnknownError.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error when silent requests are made without an account object\r\n */\r\n static createNoAccountInSilentRequestError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.NoAccountInSilentRequest.code, `${ClientAuthErrorMessage.NoAccountInSilentRequest.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error when cache record is null or undefined.\r\n */\r\n static createNullOrUndefinedCacheRecord(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheRecord.code, ClientAuthErrorMessage.invalidCacheRecord.desc);\r\n }\r\n\r\n /**\r\n * Throws error when provided environment is not part of the CloudDiscoveryMetadata object\r\n */\r\n static createInvalidCacheEnvironmentError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheEnvironment.code, ClientAuthErrorMessage.invalidCacheEnvironment.desc);\r\n }\r\n\r\n /**\r\n * Throws error when account is not found in cache.\r\n */\r\n static createNoAccountFoundError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAccountFound.code, ClientAuthErrorMessage.noAccountFound.desc);\r\n }\r\n\r\n /**\r\n * Throws error if ICachePlugin not set on CacheManager.\r\n */\r\n static createCachePluginError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.CachePluginError.code, `${ClientAuthErrorMessage.CachePluginError.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if crypto object not found.\r\n * @param operationName\r\n */\r\n static createNoCryptoObjectError(operationName: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.noCryptoObj.code, `${ClientAuthErrorMessage.noCryptoObj.desc}${operationName}`);\r\n }\r\n\r\n /**\r\n * Throws error if cache type is invalid.\r\n */\r\n static createInvalidCacheTypeError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheType.code, `${ClientAuthErrorMessage.invalidCacheType.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if unexpected account type.\r\n */\r\n static createUnexpectedAccountTypeError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedAccountType.code, `${ClientAuthErrorMessage.unexpectedAccountType.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if unexpected credential type.\r\n */\r\n static createUnexpectedCredentialTypeError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedCredentialType.code, `${ClientAuthErrorMessage.unexpectedCredentialType.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n static createInvalidAssertionError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidAssertion.code, `${ClientAuthErrorMessage.invalidAssertion.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n static createInvalidCredentialError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidClientCredential.code, `${ClientAuthErrorMessage.invalidClientCredential.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if token cannot be retrieved from cache due to refresh being required.\r\n */\r\n static createRefreshRequiredError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRefreshRequired.code, ClientAuthErrorMessage.tokenRefreshRequired.desc);\r\n }\r\n\r\n /**\r\n * Throws error if the user defined timeout is reached.\r\n */\r\n static createUserTimeoutReachedError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.userTimeoutReached.code, ClientAuthErrorMessage.userTimeoutReached.desc);\r\n }\r\n\r\n /*\r\n * Throws error if token claims are not populated for a signed jwt generation\r\n */\r\n static createTokenClaimsRequiredError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenClaimsRequired.code, ClientAuthErrorMessage.tokenClaimsRequired.desc);\r\n }\r\n\r\n /**\r\n * Throws error when the authorization code is missing from the server response\r\n */\r\n static createNoAuthCodeInServerResponseError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAuthorizationCodeFromServer.code, ClientAuthErrorMessage.noAuthorizationCodeFromServer.desc);\r\n }\r\n\r\n static createBindingKeyNotRemovedError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.bindingKeyNotRemovedError.code, ClientAuthErrorMessage.bindingKeyNotRemovedError.desc);\r\n }\r\n\r\n /**\r\n * Thrown when logout is attempted for an authority that doesnt have an end_session_endpoint\r\n */\r\n static createLogoutNotSupportedError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.logoutNotSupported.code, ClientAuthErrorMessage.logoutNotSupported.desc);\r\n }\r\n\r\n /**\r\n * Create an error when kid attribute is missing from a PoP token's cache record\r\n */\r\n static createKeyIdMissingError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.keyIdMissing.code, ClientAuthErrorMessage.keyIdMissing.desc);\r\n }\r\n\r\n /**\r\n * Create an error when the client does not have network connectivity\r\n */\r\n static createNoNetworkConnectivityError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.noNetworkConnectivity.code, ClientAuthErrorMessage.noNetworkConnectivity.desc);\r\n }\r\n\r\n /**\r\n * Create an error when the user cancels the flow\r\n */\r\n static createUserCanceledError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.userCanceledError.code, ClientAuthErrorMessage.userCanceledError.desc);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { DecodedAuthToken } from \"../account/DecodedAuthToken\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\n\r\n/**\r\n * @hidden\r\n */\r\nexport class StringUtils {\r\n\r\n /**\r\n * decode a JWT\r\n *\r\n * @param authToken\r\n */\r\n static decodeAuthToken(authToken: string): DecodedAuthToken {\r\n if (StringUtils.isEmpty(authToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(authToken);\r\n }\r\n const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\r\n const matches = tokenPartsRegex.exec(authToken);\r\n if (!matches || matches.length < 4) {\r\n throw ClientAuthError.createTokenParsingError(`Given token is malformed: ${JSON.stringify(authToken)}`);\r\n }\r\n const crackedToken: DecodedAuthToken = {\r\n header: matches[1],\r\n JWSPayload: matches[2],\r\n JWSSig: matches[3]\r\n };\r\n return crackedToken;\r\n }\r\n\r\n /**\r\n * Check if a string is empty.\r\n *\r\n * @param str\r\n */\r\n static isEmpty(str?: string): boolean {\r\n return (typeof str === \"undefined\" || !str || 0 === str.length);\r\n }\r\n\r\n /**\r\n * Check if stringified object is empty\r\n * @param strObj \r\n */\r\n static isEmptyObj(strObj?: string): boolean {\r\n if (strObj && !StringUtils.isEmpty(strObj)) {\r\n try {\r\n const obj = JSON.parse(strObj);\r\n return Object.keys(obj).length === 0;\r\n } catch (e) {}\r\n }\r\n return true;\r\n }\r\n\r\n static startsWith(str: string, search: string): boolean {\r\n return str.indexOf(search) === 0;\r\n }\r\n\r\n static endsWith(str: string, search: string): boolean {\r\n return (str.length >= search.length) && (str.lastIndexOf(search) === (str.length - search.length));\r\n }\r\n\r\n /**\r\n * Parses string into an object.\r\n *\r\n * @param query\r\n */\r\n static queryStringToObject<T>(query: string): T {\r\n const obj: {} = {};\r\n const params = query.split(\"&\");\r\n const decode = (s: string) => decodeURIComponent(s.replace(/\\+/g, \" \"));\r\n params.forEach((pair) => {\r\n if (pair.trim()) {\r\n const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character\r\n if (key && value) {\r\n obj[decode(key)] = decode(value);\r\n }\r\n }\r\n });\r\n return obj as T;\r\n }\r\n\r\n /**\r\n * Trims entries in an array.\r\n *\r\n * @param arr\r\n */\r\n static trimArrayEntries(arr: Array<string>): Array<string> {\r\n return arr.map(entry => entry.trim());\r\n }\r\n\r\n /**\r\n * Removes empty strings from array\r\n * @param arr\r\n */\r\n static removeEmptyStringsFromArray(arr: Array<string>): Array<string> {\r\n return arr.filter(entry => {\r\n return !StringUtils.isEmpty(entry);\r\n });\r\n }\r\n\r\n /**\r\n * Attempts to parse a string into JSON\r\n * @param str\r\n */\r\n static jsonParseHelper<T>(str: string): T | null {\r\n try {\r\n return JSON.parse(str) as T;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\r\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\r\n * @param input String to match against\r\n */\r\n static matchPattern(pattern: string, input: string): boolean {\r\n /**\r\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\r\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\r\n */\r\n const regex: RegExp = new RegExp(pattern.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\*/g, \"[^ ]*\").replace(/\\?/g, \"\\\\\\?\")); // eslint-disable-line security/detect-non-literal-regexp\r\n\r\n return regex.test(input);\r\n }\r\n}\r\n","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nexport enum EventType {\r\n INITIALIZE_START = \"msal:initializeStart\",\r\n INITIALIZE_END = \"msal:initializeEnd\",\r\n ACCOUNT_ADDED = \"msal:accountAdded\",\r\n ACCOUNT_REMOVED = \"msal:accountRemoved\",\r\n LOGIN_START = \"msal:loginStart\",\r\n LOGIN_SUCCESS = \"msal:loginSuccess\",\r\n LOGIN_FAILURE = \"msal:loginFailure\",\r\n ACQUIRE_TOKEN_START = \"msal:acquireTokenStart\",\r\n ACQUIRE_TOKEN_SUCCESS = \"msal:acquireTokenSuccess\",\r\n ACQUIRE_TOKEN_FAILURE = \"msal:acquireTokenFailure\",\r\n ACQUIRE_TOKEN_NETWORK_START = \"msal:acquireTokenFromNetworkStart\",\r\n SSO_SILENT_START = \"msal:ssoSilentStart\",\r\n SSO_SILENT_SUCCESS = \"msal:ssoSilentSuccess\",\r\n SSO_SILENT_FAILURE = \"msal:ssoSilentFailure\",\r\n ACQUIRE_TOKEN_BY_CODE_START = \"msal:acquireTokenByCodeStart\",\r\n ACQUIRE_TOKEN_BY_CODE_SUCCESS = \"msal:acquireTokenByCodeSuccess\",\r\n ACQUIRE_TOKEN_BY_CODE_FAILURE = \"msal:acquireTokenByCodeFailure\",\r\n HANDLE_REDIRECT_START = \"msal:handleRedirectStart\",\r\n HANDLE_REDIRECT_END = \"msal:handleRedirectEnd\",\r\n POPUP_OPENED = \"msal:popupOpened\",\r\n LOGOUT_START = \"msal:logoutStart\",\r\n LOGOUT_SUCCESS = \"msal:logoutSuccess\",\r\n LOGOUT_FAILURE = \"msal:logoutFailure\",\r\n LOGOUT_END = \"msal:logoutEnd\",\r\n RESTORE_FROM_BFCACHE = \"msal:restoreFromBFCache\"\r\n}\r\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}","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<BrowserRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<HashRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return <a {...props} />;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Link> outside a <Router>\");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <NavLink> outside a <Router>\");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return <Link {...props} />;\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\n","import { TASK, SAGA_ACTION, MULTICAST, IO } from '@redux-saga/symbols';\n\nvar undef = function undef(v) {\n return v === null || v === undefined;\n};\nvar notUndef = function notUndef(v) {\n return v !== null && v !== undefined;\n};\nvar func = function func(f) {\n return typeof f === 'function';\n};\nvar number = function number(n) {\n return typeof n === 'number';\n};\nvar string = function string(s) {\n return typeof s === 'string';\n};\nvar array = Array.isArray;\nvar object = function object(obj) {\n return obj && !array(obj) && typeof obj === 'object';\n};\nvar promise = function promise(p) {\n return p && func(p.then);\n};\nvar iterator = function iterator(it) {\n return it && func(it.next) && func(it.throw);\n};\nvar iterable = function iterable(it) {\n return it && func(Symbol) ? func(it[Symbol.iterator]) : array(it);\n};\nvar task = function task(t) {\n return t && t[TASK];\n};\nvar sagaAction = function sagaAction(a) {\n return Boolean(a && a[SAGA_ACTION]);\n};\nvar observable = function observable(ob) {\n return ob && func(ob.subscribe);\n};\nvar buffer = function buffer(buf) {\n return buf && func(buf.isEmpty) && func(buf.take) && func(buf.put);\n};\nvar pattern = function pattern(pat) {\n return pat && (string(pat) || symbol(pat) || func(pat) || array(pat) && pat.every(pattern));\n};\nvar channel = function channel(ch) {\n return ch && func(ch.take) && func(ch.close);\n};\nvar stringableFunc = function stringableFunc(f) {\n return func(f) && f.hasOwnProperty('toString');\n};\nvar symbol = function symbol(sym) {\n return Boolean(sym) && typeof Symbol === 'function' && sym.constructor === Symbol && sym !== Symbol.prototype;\n};\nvar multicast = function multicast(ch) {\n return channel(ch) && ch[MULTICAST];\n};\nvar effect = function effect(eff) {\n return eff && eff[IO];\n};\n\nexport { array, buffer, channel, effect, func, iterable, iterator, multicast, notUndef, number, object, observable, pattern, promise, sagaAction, string, stringableFunc, symbol, task, undef };\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants } from \"../utils/Constants\";\r\n\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const AuthErrorMessage = {\r\n unexpectedError: {\r\n code: \"unexpected_error\",\r\n desc: \"Unexpected error in authentication.\"\r\n },\r\n postRequestFailed: {\r\n code: \"post_request_failed\",\r\n desc: \"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.\"\r\n }\r\n};\r\n\r\n/**\r\n * General error class thrown by the MSAL.js library.\r\n */\r\nexport class AuthError extends Error {\r\n\r\n /**\r\n * Short string denoting error\r\n */\r\n errorCode: string;\r\n\r\n /**\r\n * Detailed description of error\r\n */\r\n errorMessage: string;\r\n\r\n /**\r\n * Describes the subclass of an error\r\n */\r\n subError: string;\r\n\r\n /**\r\n * CorrelationId associated with the error\r\n */\r\n correlationId: string;\r\n\r\n constructor(errorCode?: string, errorMessage?: string, suberror?: string) {\r\n const errorString = errorMessage ? `${errorCode}: ${errorMessage}` : errorCode;\r\n super(errorString);\r\n Object.setPrototypeOf(this, AuthError.prototype);\r\n\r\n this.errorCode = errorCode || Constants.EMPTY_STRING;\r\n this.errorMessage = errorMessage || Constants.EMPTY_STRING;\r\n this.subError = suberror || Constants.EMPTY_STRING;\r\n this.name = \"AuthError\";\r\n }\r\n\r\n setCorrelationId(correlationId: string): void {\r\n this.correlationId = correlationId;\r\n }\r\n\r\n /**\r\n * Creates an error that is thrown when something unexpected happens in the library.\r\n * @param errDesc\r\n */\r\n static createUnexpectedError(errDesc: string): AuthError {\r\n return new AuthError(AuthErrorMessage.unexpectedError.code, `${AuthErrorMessage.unexpectedError.desc}: ${errDesc}`);\r\n }\r\n\r\n /**\r\n * Creates an error for post request failures.\r\n * @param errDesc \r\n * @returns \r\n */\r\n static createPostRequestFailed(errDesc: string): AuthError {\r\n return new AuthError(AuthErrorMessage.postRequestFailed.code, `${AuthErrorMessage.postRequestFailed.desc}: ${errDesc}`);\r\n }\r\n}\r\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\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) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\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","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React, { useContext, useMemo } from 'react';\nvar ThemeContext = /*#__PURE__*/React.createContext({});\nvar Consumer = ThemeContext.Consumer,\n Provider = ThemeContext.Provider;\n\nfunction ThemeProvider(_ref) {\n var prefixes = _ref.prefixes,\n children = _ref.children;\n var copiedPrefixes = useMemo(function () {\n return _extends({}, prefixes);\n }, [prefixes]);\n return /*#__PURE__*/React.createElement(Provider, {\n value: copiedPrefixes\n }, children);\n}\n\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n var prefixes = useContext(ThemeContext);\n return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\n\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n var _opts = opts,\n prefix = _opts.prefix,\n _opts$forwardRefAs = _opts.forwardRefAs,\n forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;\n var Wrapped = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n var props = _extends({}, _ref2);\n\n props[forwardRefAs] = ref;\n var bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n bsPrefix: bsPrefix\n }));\n });\n Wrapped.displayName = \"Bootstrap(\" + (Component.displayName || Component.name) + \")\";\n return Wrapped;\n}\n\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","var createSymbol = function createSymbol(name) {\n return \"@@redux-saga/\" + name;\n};\n\nvar CANCEL =\n/*#__PURE__*/\ncreateSymbol('CANCEL_PROMISE');\nvar CHANNEL_END_TYPE =\n/*#__PURE__*/\ncreateSymbol('CHANNEL_END');\nvar IO =\n/*#__PURE__*/\ncreateSymbol('IO');\nvar MATCH =\n/*#__PURE__*/\ncreateSymbol('MATCH');\nvar MULTICAST =\n/*#__PURE__*/\ncreateSymbol('MULTICAST');\nvar SAGA_ACTION =\n/*#__PURE__*/\ncreateSymbol('SAGA_ACTION');\nvar SELF_CANCELLATION =\n/*#__PURE__*/\ncreateSymbol('SELF_CANCELLATION');\nvar TASK =\n/*#__PURE__*/\ncreateSymbol('TASK');\nvar TASK_CANCEL =\n/*#__PURE__*/\ncreateSymbol('TASK_CANCEL');\nvar TERMINATE =\n/*#__PURE__*/\ncreateSymbol('TERMINATE');\nvar SAGA_LOCATION =\n/*#__PURE__*/\ncreateSymbol('LOCATION');\n\nexport { CANCEL, CHANNEL_END_TYPE, IO, MATCH, MULTICAST, SAGA_ACTION, SAGA_LOCATION, SELF_CANCELLATION, TASK, TASK_CANCEL, TERMINATE };\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\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}","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _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}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"fluid\", \"rounded\", \"roundedCircle\", \"thumbnail\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { useBootstrapPrefix } from './ThemeProvider';\nexport var propTypes = {\n /**\n * @default 'img'\n */\n bsPrefix: PropTypes.string,\n\n /**\n * Sets image as fluid image.\n */\n fluid: PropTypes.bool,\n\n /**\n * Sets image shape as rounded.\n */\n rounded: PropTypes.bool,\n\n /**\n * Sets image shape as circle.\n */\n roundedCircle: PropTypes.bool,\n\n /**\n * Sets image shape as thumbnail.\n */\n thumbnail: PropTypes.bool\n};\nvar defaultProps = {\n fluid: false,\n rounded: false,\n roundedCircle: false,\n thumbnail: false\n};\nvar Image = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n fluid = _ref.fluid,\n rounded = _ref.rounded,\n roundedCircle = _ref.roundedCircle,\n thumbnail = _ref.thumbnail,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'img');\n var classes = classNames(fluid && bsPrefix + \"-fluid\", rounded && \"rounded\", roundedCircle && \"rounded-circle\", thumbnail && bsPrefix + \"-thumbnail\");\n return /*#__PURE__*/React.createElement(\"img\", _extends({\n // eslint-disable-line jsx-a11y/alt-text\n ref: ref\n }, props, {\n className: classNames(className, classes)\n }));\n});\nImage.displayName = 'Image';\nImage.defaultProps = defaultProps;\nexport default Image;","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"@azure/msal-common\";\r\n\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const BrowserConfigurationAuthErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n storageNotSupportedError: {\r\n code: \"storage_not_supported\",\r\n desc: \"Given storage configuration option was not supported.\"\r\n },\r\n noRedirectCallbacksSet: {\r\n code: \"no_redirect_callbacks\",\r\n desc: \"No redirect callbacks have been set. Please call setRedirectCallbacks() with the appropriate function arguments before continuing. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n invalidCallbackObject: {\r\n code: \"invalid_callback_object\",\r\n desc: \"The object passed for the callback was invalid. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n stubPcaInstanceCalled: {\r\n code: \"stubbed_public_client_application_called\",\r\n desc: \"Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors\"\r\n },\r\n inMemRedirectUnavailable: {\r\n code: \"in_mem_redirect_unavailable\",\r\n desc: \"Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true.\"\r\n },\r\n entropyNotProvided: {\r\n code: \"entropy_not_provided\",\r\n desc: \"The available browser crypto interface requires entropy set via system.cryptoOptions.entropy configuration option.\"\r\n }\r\n};\r\n\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nexport class BrowserConfigurationAuthError extends AuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n this.name = \"BrowserConfigurationAuthError\";\r\n\r\n Object.setPrototypeOf(this, BrowserConfigurationAuthError.prototype);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n static createRedirectUriEmptyError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.redirectUriNotSet.code,\r\n BrowserConfigurationAuthErrorMessage.redirectUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n static createPostLogoutRedirectUriEmptyError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.code,\r\n BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates error thrown when given storage location is not supported.\r\n * @param givenStorageLocation \r\n */\r\n static createStorageNotSupportedError(givenStorageLocation: string): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.storageNotSupportedError.code, `${BrowserConfigurationAuthErrorMessage.storageNotSupportedError.desc} Given Location: ${givenStorageLocation}`);\r\n }\r\n\r\n /**\r\n * Creates error thrown when redirect callbacks are not set before calling loginRedirect() or acquireTokenRedirect().\r\n */\r\n static createRedirectCallbacksNotSetError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.code, \r\n BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.desc);\r\n }\r\n\r\n /**\r\n * Creates error thrown when the stub instance of PublicClientApplication is called.\r\n */\r\n static createStubPcaInstanceCalledError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.code,\r\n BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.desc);\r\n }\r\n\r\n /*\r\n * Create an error thrown when in-memory storage is used and storeAuthStateInCookie=false.\r\n */\r\n static createInMemoryRedirectUnavailableError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.code, BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.desc);\r\n }\r\n \r\n /**\r\n * Creates an error thrown when a crypto interface that requires entropy is initialized without entropy\r\n */\r\n static createEntropyNotProvided(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.entropyNotProvided.code, BrowserConfigurationAuthErrorMessage.entropyNotProvided.desc);\r\n }\r\n}\r\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nconst MAX_SIGNED_31_BIT_INT = 1073741823;\n\nconst commonjsGlobal =\n typeof globalThis !== \"undefined\" // 'global proper'\n ? // eslint-disable-next-line no-undef\n globalThis\n : typeof window !== \"undefined\"\n ? window // Browser\n : typeof global !== \"undefined\"\n ? global // node.js\n : {};\n\nfunction getUniqueId() {\n let key = \"__global_unique_id__\";\n return (commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1);\n}\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // eslint-disable-next-line no-self-compare\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n let handlers = [];\n return {\n on(handler) {\n handlers.push(handler);\n },\n\n off(handler) {\n handlers = handlers.filter(h => h !== handler);\n },\n\n get() {\n return value;\n },\n\n set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(handler => handler(value, changedBits));\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nexport default function createReactContext(defaultValue, calculateChangedBits) {\n const contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n class Provider extends React.Component {\n emitter = createEventEmitter(this.props.value);\n\n static childContextTypes = {\n [contextProp]: PropTypes.object.isRequired\n };\n\n getChildContext() {\n return {\n [contextProp]: this.emitter\n };\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n let oldValue = this.props.value;\n let newValue = nextProps.value;\n let changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits =\n typeof calculateChangedBits === \"function\"\n ? calculateChangedBits(oldValue, newValue)\n : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== \"production\") {\n warning(\n (changedBits & MAX_SIGNED_31_BIT_INT) === changedBits,\n \"calculateChangedBits: Expected the return value to be a \" +\n \"31-bit integer. Instead received: \" +\n changedBits\n );\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n }\n\n render() {\n return this.props.children;\n }\n }\n\n class Consumer extends React.Component {\n static contextTypes = {\n [contextProp]: PropTypes.object\n };\n\n observedBits;\n\n state = {\n value: this.getValue()\n };\n\n componentWillReceiveProps(nextProps) {\n let { observedBits } = nextProps;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n let { observedBits } = this.props;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n }\n\n getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n }\n\n onUpdate = (newValue, changedBits) => {\n const observedBits = this.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n this.setState({ value: this.getValue() });\n }\n };\n\n render() {\n return onlyChild(this.props.children)(this.state.value);\n }\n }\n\n return {\n Provider,\n Consumer\n };\n}\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport createReactContext from \"./miniCreateReactContext\";\n\nexport default React.createContext || createReactContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"./createContext\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any <Redirect>s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the <Router> is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n this._pendingLocation = location;\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n }\n });\n }\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n <RouterContext.Provider\n value={{\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }}\n >\n <HistoryContext.Provider\n children={this.props.children || null}\n value={this.props.history}\n />\n </RouterContext.Provider>\n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change <Router history>\"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<MemoryRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\nfunction Prompt({ message, when = true }) {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Prompt> outside a <Router>\");\n\n if (!when || context.staticContext) return null;\n\n const method = context.history.block;\n\n return (\n <Lifecycle\n onMount={self => {\n self.release = method(message);\n }}\n onUpdate={(self, prevProps) => {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n }}\n onUnmount={self => {\n self.release();\n }}\n message={message}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n}\n\nif (__DEV__) {\n const messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n\n Prompt.propTypes = {\n when: PropTypes.bool,\n message: messageType.isRequired\n };\n}\n\nexport default Prompt;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Redirect> outside a <Router>\");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n <Lifecycle\n onMount={() => {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `<Route${path ? ` path=\"${path}\"` : \"\"}>, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Route> outside a <Router>\");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // <Switch> already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n <RouterContext.Provider value={props}>\n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n </RouterContext.Provider>\n );\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with <StaticRouter>\", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return <Router {...rest} history={history} staticContext={context} />;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<StaticRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Switch> outside a <Router>\");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two <Route>s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n const displayName = `withRouter(${Component.displayName || Component.name})`;\n const C = props => {\n const { wrappedComponentRef, ...remainingProps } = props;\n\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(\n context,\n `You should not use <${displayName} /> outside a <Router>`\n );\n return (\n <Component\n {...remainingProps}\n {...context}\n ref={wrappedComponentRef}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (__DEV__) {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.object\n ])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.filter(function (f) {\n return f != null;\n }).reduce(function (acc, f) {\n if (typeof f !== 'function') {\n throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n\n if (acc === null) return f;\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n // @ts-ignore\n acc.apply(this, args); // @ts-ignore\n\n f.apply(this, args);\n };\n }, null);\n}\n\nexport default createChainedFunction;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"disabled\", \"onKeyDown\"];\nimport React from 'react';\nimport createChainedFunction from './createChainedFunction';\n\nfunction isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nvar SafeAnchor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'a' : _ref$as,\n disabled = _ref.disabled,\n onKeyDown = _ref.onKeyDown,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var handleClick = function handleClick(event) {\n var href = props.href,\n onClick = props.onClick;\n\n if (disabled || isTrivialHref(href)) {\n event.preventDefault();\n }\n\n if (disabled) {\n event.stopPropagation();\n return;\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === ' ') {\n event.preventDefault();\n handleClick(event);\n }\n };\n\n if (isTrivialHref(props.href)) {\n props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n // otherwise, the cursor incorrectly styled (except with role='button')\n\n props.href = props.href || '#';\n }\n\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n onClick: handleClick,\n onKeyDown: createChainedFunction(handleKeyDown, onKeyDown)\n }));\n});\nSafeAnchor.displayName = 'SafeAnchor';\nexport default SafeAnchor;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"variant\", \"size\", \"active\", \"className\", \"block\", \"type\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n variant: 'primary',\n active: false,\n disabled: false\n};\nvar Button = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n variant = _ref.variant,\n size = _ref.size,\n active = _ref.active,\n className = _ref.className,\n block = _ref.block,\n type = _ref.type,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'btn');\n var classes = classNames(className, prefix, active && 'active', variant && prefix + \"-\" + variant, block && prefix + \"-block\", size && prefix + \"-\" + size);\n\n if (props.href) {\n return /*#__PURE__*/React.createElement(SafeAnchor, _extends({}, props, {\n as: as,\n ref: ref,\n className: classNames(classes, props.disabled && 'disabled')\n }));\n }\n\n if (ref) {\n props.ref = ref;\n }\n\n if (type) {\n props.type = type;\n } else if (!as) {\n props.type = 'button';\n }\n\n var Component = as || 'button';\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n className: classes\n }));\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","import parse from './parse'\nimport stringify from './stringify'\n\nexport default {\n parse,\n stringify,\n}\n","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport classNames from 'classnames';\nexport default (function (className) {\n return /*#__PURE__*/React.forwardRef(function (p, ref) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, p, {\n ref: ref,\n className: classNames(p.className, className)\n }));\n });\n});","import React from 'react';\nvar context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'CardContext';\nexport default context;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"variant\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n variant: null\n};\nvar CardImg = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n variant = _ref.variant,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'img' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'card-img');\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref,\n className: classNames(variant ? prefix + \"-\" + variant : prefix, className)\n }, props));\n});\nCardImg.displayName = 'CardImg';\nCardImg.defaultProps = defaultProps;\nexport default CardImg;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"bg\", \"text\", \"border\", \"body\", \"children\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nimport CardContext from './CardContext';\nimport CardImg from './CardImg';\nvar DivStyledAsH5 = divWithClassName('h5');\nvar DivStyledAsH6 = divWithClassName('h6');\nvar CardBody = createWithBsPrefix('card-body');\nvar CardTitle = createWithBsPrefix('card-title', {\n Component: DivStyledAsH5\n});\nvar CardSubtitle = createWithBsPrefix('card-subtitle', {\n Component: DivStyledAsH6\n});\nvar CardLink = createWithBsPrefix('card-link', {\n Component: 'a'\n});\nvar CardText = createWithBsPrefix('card-text', {\n Component: 'p'\n});\nvar CardHeader = createWithBsPrefix('card-header');\nvar CardFooter = createWithBsPrefix('card-footer');\nvar CardImgOverlay = createWithBsPrefix('card-img-overlay');\nvar defaultProps = {\n body: false\n};\nvar Card = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n bg = _ref.bg,\n text = _ref.text,\n border = _ref.border,\n body = _ref.body,\n children = _ref.children,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'card');\n var cardContext = useMemo(function () {\n return {\n cardHeaderBsPrefix: prefix + \"-header\"\n };\n }, [prefix]);\n return /*#__PURE__*/React.createElement(CardContext.Provider, {\n value: cardContext\n }, /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, prefix, bg && \"bg-\" + bg, text && \"text-\" + text, border && \"border-\" + border)\n }), body ?\n /*#__PURE__*/\n // @ts-ignore\n React.createElement(CardBody, null, children) : children));\n});\nCard.displayName = 'Card';\nCard.defaultProps = defaultProps;\nCard.Img = CardImg;\nCard.Title = CardTitle;\nCard.Subtitle = CardSubtitle;\nCard.Body = CardBody;\nCard.Link = CardLink;\nCard.Text = CardText;\nCard.Header = CardHeader;\nCard.Footer = CardFooter;\nCard.ImgOverlay = CardImgOverlay;\nexport default Card;","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { Separators, Constants } from \"../utils/Constants\";\r\n\r\n/**\r\n * Client info object which consists of two IDs. Need to add more info here.\r\n */\r\nexport type ClientInfo = {\r\n uid: string,\r\n utid: string\r\n};\r\n\r\n/**\r\n * Function to build a client info object from server clientInfo string\r\n * @param rawClientInfo\r\n * @param crypto\r\n */\r\nexport function buildClientInfo(rawClientInfo: string, crypto: ICrypto): ClientInfo {\r\n if (StringUtils.isEmpty(rawClientInfo)) {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n\r\n try {\r\n const decodedClientInfo: string = crypto.base64Decode(rawClientInfo);\r\n return JSON.parse(decodedClientInfo) as ClientInfo;\r\n } catch (e) {\r\n throw ClientAuthError.createClientInfoDecodingError((e as ClientAuthError).message);\r\n }\r\n}\r\n\r\n/**\r\n * Function to build a client info object from cached homeAccountId string\r\n * @param homeAccountId \r\n */\r\nexport function buildClientInfoFromHomeAccountId(homeAccountId: string): ClientInfo {\r\n if (StringUtils.isEmpty(homeAccountId)) {\r\n throw ClientAuthError.createClientInfoDecodingError(\"Home account ID was empty.\");\r\n }\r\n const clientInfoParts: string[] = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\r\n return {\r\n uid: clientInfoParts[0],\r\n utid: clientInfoParts.length < 2 ? Constants.EMPTY_STRING : clientInfoParts[1]\r\n };\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Authority types supported by MSAL.\r\n */\r\nexport enum AuthorityType {\r\n Default,\r\n Adfs,\r\n Dsts,\r\n Ciam\r\n}\r\n","var rHyphen = /-(.)/g;\nexport default function camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"bsPrefix\", \"as\"];\nimport classNames from 'classnames';\nimport camelize from 'dom-helpers/camelize';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\n\nvar pascalCase = function pascalCase(str) {\n return str[0].toUpperCase() + camelize(str).slice(1);\n};\n\n// TODO: emstricten & fix the typing here! `createWithBsPrefix<TElementType>...`\nexport default function createWithBsPrefix(prefix, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$displayName = _ref.displayName,\n displayName = _ref$displayName === void 0 ? pascalCase(prefix) : _ref$displayName,\n Component = _ref.Component,\n defaultProps = _ref.defaultProps;\n\n var BsComponent = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n var className = _ref2.className,\n bsPrefix = _ref2.bsPrefix,\n _ref2$as = _ref2.as,\n Tag = _ref2$as === void 0 ? Component || 'div' : _ref2$as,\n props = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n var resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: ref,\n className: classNames(className, resolvedPrefix)\n }, props));\n });\n BsComponent.defaultProps = defaultProps;\n BsComponent.displayName = displayName;\n return BsComponent;\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _lottieWeb = require('lottie-web');\n\nvar _lottieWeb2 = _interopRequireDefault(_lottieWeb);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Lottie = function (_React$Component) {\n (0, _inherits3.default)(Lottie, _React$Component);\n\n function Lottie() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, Lottie);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = Lottie.__proto__ || (0, _getPrototypeOf2.default)(Lottie)).call.apply(_ref, [this].concat(args))), _this), _this.handleClickToPause = function () {\n // The pause() method is for handling pausing by passing a prop isPaused\n // This method is for handling the ability to pause by clicking on the animation\n if (_this.anim.isPaused) {\n _this.anim.play();\n } else {\n _this.anim.pause();\n }\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(Lottie, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _props = this.props,\n options = _props.options,\n eventListeners = _props.eventListeners;\n var loop = options.loop,\n autoplay = options.autoplay,\n animationData = options.animationData,\n rendererSettings = options.rendererSettings,\n segments = options.segments;\n\n\n this.options = {\n container: this.el,\n renderer: 'svg',\n loop: loop !== false,\n autoplay: autoplay !== false,\n segments: segments !== false,\n animationData: animationData,\n rendererSettings: rendererSettings\n };\n\n this.options = (0, _extends3.default)({}, this.options, options);\n\n this.anim = _lottieWeb2.default.loadAnimation(this.options);\n this.registerEvents(eventListeners);\n }\n }, {\n key: 'componentWillUpdate',\n value: function componentWillUpdate(nextProps /* , nextState */) {\n /* Recreate the animation handle if the data is changed */\n if (this.options.animationData !== nextProps.options.animationData) {\n this.deRegisterEvents(this.props.eventListeners);\n this.destroy();\n this.options = (0, _extends3.default)({}, this.options, nextProps.options);\n this.anim = _lottieWeb2.default.loadAnimation(this.options);\n this.registerEvents(nextProps.eventListeners);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (this.props.isStopped) {\n this.stop();\n } else if (this.props.segments) {\n this.playSegments();\n } else {\n this.play();\n }\n\n this.pause();\n this.setSpeed();\n this.setDirection();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.deRegisterEvents(this.props.eventListeners);\n this.destroy();\n this.options.animationData = null;\n this.anim = null;\n }\n }, {\n key: 'setSpeed',\n value: function setSpeed() {\n this.anim.setSpeed(this.props.speed);\n }\n }, {\n key: 'setDirection',\n value: function setDirection() {\n this.anim.setDirection(this.props.direction);\n }\n }, {\n key: 'play',\n value: function play() {\n this.anim.play();\n }\n }, {\n key: 'playSegments',\n value: function playSegments() {\n this.anim.playSegments(this.props.segments);\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.anim.stop();\n }\n }, {\n key: 'pause',\n value: function pause() {\n if (this.props.isPaused && !this.anim.isPaused) {\n this.anim.pause();\n } else if (!this.props.isPaused && this.anim.isPaused) {\n this.anim.pause();\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.anim.destroy();\n }\n }, {\n key: 'registerEvents',\n value: function registerEvents(eventListeners) {\n var _this2 = this;\n\n eventListeners.forEach(function (eventListener) {\n _this2.anim.addEventListener(eventListener.eventName, eventListener.callback);\n });\n }\n }, {\n key: 'deRegisterEvents',\n value: function deRegisterEvents(eventListeners) {\n var _this3 = this;\n\n eventListeners.forEach(function (eventListener) {\n _this3.anim.removeEventListener(eventListener.eventName, eventListener.callback);\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var _props2 = this.props,\n width = _props2.width,\n height = _props2.height,\n ariaRole = _props2.ariaRole,\n ariaLabel = _props2.ariaLabel,\n isClickToPauseDisabled = _props2.isClickToPauseDisabled,\n title = _props2.title;\n\n\n var getSize = function getSize(initial) {\n var size = void 0;\n\n if (typeof initial === 'number') {\n size = initial + 'px';\n } else {\n size = initial || '100%';\n }\n\n return size;\n };\n\n var lottieStyles = (0, _extends3.default)({\n width: getSize(width),\n height: getSize(height),\n overflow: 'hidden',\n margin: '0 auto',\n outline: 'none'\n }, this.props.style);\n\n var onClickHandler = isClickToPauseDisabled ? function () {\n return null;\n } : this.handleClickToPause;\n\n return (\n // Bug with eslint rules https://github.com/airbnb/javascript/issues/1374\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n _react2.default.createElement('div', {\n ref: function ref(c) {\n _this4.el = c;\n },\n style: lottieStyles,\n onClick: onClickHandler,\n title: title,\n role: ariaRole,\n 'aria-label': ariaLabel,\n tabIndex: '0'\n })\n );\n }\n }]);\n return Lottie;\n}(_react2.default.Component);\n\nexports.default = Lottie;\n\n\nLottie.propTypes = {\n eventListeners: _propTypes2.default.arrayOf(_propTypes2.default.object),\n options: _propTypes2.default.object.isRequired,\n height: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n isStopped: _propTypes2.default.bool,\n isPaused: _propTypes2.default.bool,\n speed: _propTypes2.default.number,\n segments: _propTypes2.default.arrayOf(_propTypes2.default.number),\n direction: _propTypes2.default.number,\n ariaRole: _propTypes2.default.string,\n ariaLabel: _propTypes2.default.string,\n isClickToPauseDisabled: _propTypes2.default.bool,\n title: _propTypes2.default.string,\n style: _propTypes2.default.string\n};\n\nLottie.defaultProps = {\n eventListeners: [],\n isStopped: false,\n isPaused: false,\n speed: 1,\n ariaRole: 'button',\n ariaLabel: 'animation',\n isClickToPauseDisabled: false,\n title: ''\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"className\", \"type\", \"tooltip\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nvar propTypes = {\n /**\n * Specify whether the feedback is for valid or invalid fields\n *\n * @type {('valid'|'invalid')}\n */\n type: PropTypes.string,\n\n /** Display feedback as a tooltip. */\n tooltip: PropTypes.bool,\n as: PropTypes.elementType\n};\nvar Feedback = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'valid' : _ref$type,\n _ref$tooltip = _ref.tooltip,\n tooltip = _ref$tooltip === void 0 ? false : _ref$tooltip,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, type + \"-\" + (tooltip ? 'tooltip' : 'feedback'))\n }));\n});\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nexport default Feedback;","import React from 'react'; // TODO\n\nvar FormContext = /*#__PURE__*/React.createContext({\n controlId: undefined\n});\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"className\", \"type\", \"isValid\", \"isInvalid\", \"isStatic\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheckInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'checkbox' : _ref$type,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n isStatic = _ref.isStatic,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-control-input'] : [bsPrefix, 'form-check-input'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n type: type,\n id: id || controlId,\n className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid', isStatic && 'position-static')\n }));\n});\nFormCheckInput.displayName = 'FormCheckInput';\nexport default FormCheckInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheckLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-control-label'] : [bsPrefix, 'form-check-label'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(\"label\", _extends({}, props, {\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, bsPrefix)\n }));\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nexport default FormCheckLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"inline\", \"disabled\", \"isValid\", \"isInvalid\", \"feedbackTooltip\", \"feedback\", \"className\", \"style\", \"title\", \"type\", \"label\", \"children\", \"custom\", \"as\"];\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext, useMemo } from 'react';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheck = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n _ref$inline = _ref.inline,\n inline = _ref$inline === void 0 ? false : _ref$inline,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n _ref$feedbackTooltip = _ref.feedbackTooltip,\n feedbackTooltip = _ref$feedbackTooltip === void 0 ? false : _ref$feedbackTooltip,\n feedback = _ref.feedback,\n className = _ref.className,\n style = _ref.style,\n _ref$title = _ref.title,\n title = _ref$title === void 0 ? '' : _ref$title,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'checkbox' : _ref$type,\n label = _ref.label,\n children = _ref.children,\n propCustom = _ref.custom,\n _ref$as = _ref.as,\n as = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var custom = type === 'switch' ? true : propCustom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-control'] : [bsPrefix, 'form-check'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var innerFormContext = useMemo(function () {\n return {\n controlId: id || controlId,\n custom: custom\n };\n }, [controlId, custom, id]);\n var hasLabel = custom || label != null && label !== false && !children;\n var input = /*#__PURE__*/React.createElement(FormCheckInput, _extends({}, props, {\n type: type === 'switch' ? 'checkbox' : type,\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n isStatic: !hasLabel,\n disabled: disabled,\n as: as\n }));\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: innerFormContext\n }, /*#__PURE__*/React.createElement(\"div\", {\n style: style,\n className: classNames(className, bsPrefix, custom && \"custom-\" + type, inline && bsPrefix + \"-inline\")\n }, children || /*#__PURE__*/React.createElement(React.Fragment, null, input, hasLabel && /*#__PURE__*/React.createElement(FormCheckLabel, {\n title: title\n }, label), (isValid || isInvalid) && /*#__PURE__*/React.createElement(Feedback, {\n type: isValid ? 'valid' : 'invalid',\n tooltip: feedbackTooltip\n }, feedback))));\n});\nFormCheck.displayName = 'FormCheck';\nFormCheck.Input = FormCheckInput;\nFormCheck.Label = FormCheckLabel;\nexport default FormCheck;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"className\", \"isValid\", \"isInvalid\", \"lang\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFileInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n isValid = _ref.isValid,\n isInvalid = _ref.isInvalid,\n lang = _ref.lang,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var type = 'file';\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-file-input'] : [bsPrefix, 'form-control-file'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n id: id || controlId,\n type: type,\n lang: lang,\n className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid')\n }));\n});\nFormFileInput.displayName = 'FormFileInput';\nexport default FormFileInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFileLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-file-label'] : [bsPrefix, 'form-file-label'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(\"label\", _extends({}, props, {\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, bsPrefix),\n \"data-browse\": props['data-browse']\n }));\n});\nFormFileLabel.displayName = 'FormFileLabel';\nexport default FormFileLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"disabled\", \"isValid\", \"isInvalid\", \"feedbackTooltip\", \"feedback\", \"className\", \"style\", \"label\", \"children\", \"custom\", \"lang\", \"data-browse\", \"as\", \"inputAs\"];\nimport classNames from 'classnames';\nimport React, { useContext, useMemo } from 'react';\nimport all from 'prop-types-extra/lib/all';\nimport Feedback from './Feedback';\nimport FormFileInput from './FormFileInput';\nimport FormFileLabel from './FormFileLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFile = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n _ref$feedbackTooltip = _ref.feedbackTooltip,\n feedbackTooltip = _ref$feedbackTooltip === void 0 ? false : _ref$feedbackTooltip,\n feedback = _ref.feedback,\n className = _ref.className,\n style = _ref.style,\n label = _ref.label,\n children = _ref.children,\n custom = _ref.custom,\n lang = _ref.lang,\n dataBrowse = _ref['data-browse'],\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n _ref$inputAs = _ref.inputAs,\n inputAs = _ref$inputAs === void 0 ? 'input' : _ref$inputAs,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom'] : [bsPrefix, 'form-file'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n var type = 'file';\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var innerFormContext = useMemo(function () {\n return {\n controlId: id || controlId,\n custom: custom\n };\n }, [controlId, custom, id]);\n var hasLabel = label != null && label !== false && !children;\n var input = /*#__PURE__*/React.createElement(FormFileInput, _extends({}, props, {\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n disabled: disabled,\n as: inputAs,\n lang: lang\n }));\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: innerFormContext\n }, /*#__PURE__*/React.createElement(Component, {\n style: style,\n className: classNames(className, bsPrefix, custom && \"custom-\" + type)\n }, children || /*#__PURE__*/React.createElement(React.Fragment, null, custom ? /*#__PURE__*/React.createElement(React.Fragment, null, input, hasLabel && /*#__PURE__*/React.createElement(FormFileLabel, {\n \"data-browse\": dataBrowse\n }, label)) : /*#__PURE__*/React.createElement(React.Fragment, null, hasLabel && /*#__PURE__*/React.createElement(FormFileLabel, null, label), input), (isValid || isInvalid) && /*#__PURE__*/React.createElement(Feedback, {\n type: isValid ? 'valid' : 'invalid',\n tooltip: feedbackTooltip\n }, feedback))));\n});\nFormFile.displayName = 'FormFile';\nFormFile.Input = FormFileInput;\nFormFile.Label = FormFileLabel;\nexport default FormFile;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"type\", \"size\", \"htmlSize\", \"id\", \"className\", \"isValid\", \"isInvalid\", \"plaintext\", \"readOnly\", \"custom\", \"as\"];\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormControl = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n type = _ref.type,\n size = _ref.size,\n htmlSize = _ref.htmlSize,\n id = _ref.id,\n className = _ref.className,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n plaintext = _ref.plaintext,\n readOnly = _ref.readOnly,\n custom = _ref.custom,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom'] : [bsPrefix, 'form-control'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n var classes;\n\n if (plaintext) {\n var _classes;\n\n classes = (_classes = {}, _classes[bsPrefix + \"-plaintext\"] = true, _classes);\n } else if (type === 'file') {\n var _classes2;\n\n classes = (_classes2 = {}, _classes2[bsPrefix + \"-file\"] = true, _classes2);\n } else if (type === 'range') {\n var _classes3;\n\n classes = (_classes3 = {}, _classes3[bsPrefix + \"-range\"] = true, _classes3);\n } else if (Component === 'select' && custom) {\n var _classes4;\n\n classes = (_classes4 = {}, _classes4[bsPrefix + \"-select\"] = true, _classes4[bsPrefix + \"-select-\" + size] = size, _classes4);\n } else {\n var _classes5;\n\n classes = (_classes5 = {}, _classes5[bsPrefix] = true, _classes5[bsPrefix + \"-\" + size] = size, _classes5);\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n type: type,\n size: htmlSize,\n ref: ref,\n readOnly: readOnly,\n id: id || controlId,\n className: classNames(className, classes, isValid && \"is-valid\", isInvalid && \"is-invalid\")\n }));\n});\nFormControl.displayName = 'FormControl';\nexport default Object.assign(FormControl, {\n Feedback: Feedback\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"controlId\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormGroup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n controlId = _ref.controlId,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-group');\n var context = useMemo(function () {\n return {\n controlId: controlId\n };\n }, [controlId]);\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }), children));\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"bsPrefix\", \"column\", \"srOnly\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n column: false,\n srOnly: false\n};\nvar FormLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'label' : _ref$as,\n bsPrefix = _ref.bsPrefix,\n column = _ref.column,\n srOnly = _ref.srOnly,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n var columnClass = 'col-form-label';\n if (typeof column === 'string') columnClass = columnClass + \" \" + columnClass + \"-\" + column;\n var classes = classNames(className, bsPrefix, srOnly && 'sr-only', column && columnClass);\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n htmlFor = htmlFor || controlId;\n if (column) return /*#__PURE__*/React.createElement(Col, _extends({\n ref: ref,\n as: \"label\",\n className: classes,\n htmlFor: htmlFor\n }, props));\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n React.createElement(Component, _extends({\n ref: ref,\n className: classes,\n htmlFor: htmlFor\n }, props))\n );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.defaultProps = defaultProps;\nexport default FormLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\", \"muted\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormText = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'small' : _ref$as,\n muted = _ref.muted,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix, muted && 'text-muted')\n }));\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport FormCheck from './FormCheck';\nvar Switch = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(FormCheck, _extends({}, props, {\n ref: ref,\n type: \"switch\"\n }));\n});\nSwitch.displayName = 'Switch';\nSwitch.Input = FormCheck.Input;\nSwitch.Label = FormCheck.Label;\nexport default Switch;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"inline\", \"className\", \"validated\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport FormCheck from './FormCheck';\nimport FormFile from './FormFile';\nimport FormControl from './FormControl';\nimport FormGroup from './FormGroup';\nimport FormLabel from './FormLabel';\nimport FormText from './FormText';\nimport Switch from './Switch';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nvar FormRow = createWithBsPrefix('form-row');\nvar defaultProps = {\n inline: false\n};\nvar FormImpl = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n inline = _ref.inline,\n className = _ref.className,\n validated = _ref.validated,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'form' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form');\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, validated && 'was-validated', inline && bsPrefix + \"-inline\")\n }));\n});\nFormImpl.displayName = 'Form';\nFormImpl.defaultProps = defaultProps;\nFormImpl.Row = FormRow;\nFormImpl.Group = FormGroup;\nFormImpl.Control = FormControl;\nFormImpl.Check = FormCheck;\nFormImpl.File = FormFile;\nFormImpl.Switch = Switch;\nFormImpl.Label = FormLabel;\nFormImpl.Text = FormText;\nexport default FormImpl;","/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = root.pdfjsLib = factory();\n})(this, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.StatTimer = exports.RenderingCancelledException = exports.PixelsPerInch = exports.PageViewport = exports.PDFDateString = exports.LinkTarget = exports.DOMStandardFontDataFactory = exports.DOMSVGFactory = exports.DOMCanvasFactory = exports.DOMCMapReaderFactory = void 0;\nexports.addLinkAttributes = addLinkAttributes;\nexports.deprecated = deprecated;\nexports.getFilenameFromUrl = getFilenameFromUrl;\nexports.getPdfFilenameFromUrl = getPdfFilenameFromUrl;\nexports.getXfaPageViewport = getXfaPageViewport;\nexports.isDataScheme = isDataScheme;\nexports.isPdfFile = isPdfFile;\nexports.isValidFetchUrl = isValidFetchUrl;\nexports.loadScript = loadScript;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(4);\n\nvar _base_factory = __w_pdfjs_require__(135);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar DEFAULT_LINK_REL = \"noopener noreferrer nofollow\";\nvar SVG_NS = \"http://www.w3.org/2000/svg\";\nvar PixelsPerInch = {\n CSS: 96.0,\n PDF: 72.0,\n\n get PDF_TO_CSS_UNITS() {\n return (0, _util.shadow)(this, \"PDF_TO_CSS_UNITS\", this.CSS / this.PDF);\n }\n\n};\nexports.PixelsPerInch = PixelsPerInch;\n\nvar DOMCanvasFactory = /*#__PURE__*/function (_BaseCanvasFactory) {\n _inherits(DOMCanvasFactory, _BaseCanvasFactory);\n\n var _super = _createSuper(DOMCanvasFactory);\n\n function DOMCanvasFactory() {\n var _this;\n\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$ownerDocument = _ref.ownerDocument,\n ownerDocument = _ref$ownerDocument === void 0 ? globalThis.document : _ref$ownerDocument;\n\n _classCallCheck(this, DOMCanvasFactory);\n\n _this = _super.call(this);\n _this._document = ownerDocument;\n return _this;\n }\n\n _createClass(DOMCanvasFactory, [{\n key: \"_createCanvas\",\n value: function _createCanvas(width, height) {\n var canvas = this._document.createElement(\"canvas\");\n\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n }]);\n\n return DOMCanvasFactory;\n}(_base_factory.BaseCanvasFactory);\n\nexports.DOMCanvasFactory = DOMCanvasFactory;\n\nfunction fetchData(_x) {\n return _fetchData.apply(this, arguments);\n}\n\nfunction _fetchData() {\n _fetchData = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(url) {\n var asTypedArray,\n response,\n _args = arguments;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n asTypedArray = _args.length > 1 && _args[1] !== undefined ? _args[1] : false;\n\n if (!isValidFetchUrl(url, document.baseURI)) {\n _context.next = 21;\n break;\n }\n\n _context.next = 4;\n return fetch(url);\n\n case 4:\n response = _context.sent;\n\n if (response.ok) {\n _context.next = 7;\n break;\n }\n\n throw new Error(response.statusText);\n\n case 7:\n if (!asTypedArray) {\n _context.next = 15;\n break;\n }\n\n _context.t1 = Uint8Array;\n _context.next = 11;\n return response.arrayBuffer();\n\n case 11:\n _context.t2 = _context.sent;\n _context.t0 = new _context.t1(_context.t2);\n _context.next = 20;\n break;\n\n case 15:\n _context.t3 = _util.stringToBytes;\n _context.next = 18;\n return response.text();\n\n case 18:\n _context.t4 = _context.sent;\n _context.t0 = (0, _context.t3)(_context.t4);\n\n case 20:\n return _context.abrupt(\"return\", _context.t0);\n\n case 21:\n return _context.abrupt(\"return\", new Promise(function (resolve, reject) {\n var request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n\n if (asTypedArray) {\n request.responseType = \"arraybuffer\";\n }\n\n request.onreadystatechange = function () {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n\n if (request.status === 200 || request.status === 0) {\n var data;\n\n if (asTypedArray && request.response) {\n data = new Uint8Array(request.response);\n } else if (!asTypedArray && request.responseText) {\n data = (0, _util.stringToBytes)(request.responseText);\n }\n\n if (data) {\n resolve(data);\n return;\n }\n }\n\n reject(new Error(request.statusText));\n };\n\n request.send(null);\n }));\n\n case 22:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _fetchData.apply(this, arguments);\n}\n\nvar DOMCMapReaderFactory = /*#__PURE__*/function (_BaseCMapReaderFactor) {\n _inherits(DOMCMapReaderFactory, _BaseCMapReaderFactor);\n\n var _super2 = _createSuper(DOMCMapReaderFactory);\n\n function DOMCMapReaderFactory() {\n _classCallCheck(this, DOMCMapReaderFactory);\n\n return _super2.apply(this, arguments);\n }\n\n _createClass(DOMCMapReaderFactory, [{\n key: \"_fetchData\",\n value: function _fetchData(url, compressionType) {\n return fetchData(url, this.isCompressed).then(function (data) {\n return {\n cMapData: data,\n compressionType: compressionType\n };\n });\n }\n }]);\n\n return DOMCMapReaderFactory;\n}(_base_factory.BaseCMapReaderFactory);\n\nexports.DOMCMapReaderFactory = DOMCMapReaderFactory;\n\nvar DOMStandardFontDataFactory = /*#__PURE__*/function (_BaseStandardFontData) {\n _inherits(DOMStandardFontDataFactory, _BaseStandardFontData);\n\n var _super3 = _createSuper(DOMStandardFontDataFactory);\n\n function DOMStandardFontDataFactory() {\n _classCallCheck(this, DOMStandardFontDataFactory);\n\n return _super3.apply(this, arguments);\n }\n\n _createClass(DOMStandardFontDataFactory, [{\n key: \"_fetchData\",\n value: function _fetchData(url) {\n return fetchData(url, true);\n }\n }]);\n\n return DOMStandardFontDataFactory;\n}(_base_factory.BaseStandardFontDataFactory);\n\nexports.DOMStandardFontDataFactory = DOMStandardFontDataFactory;\n\nvar DOMSVGFactory = /*#__PURE__*/function (_BaseSVGFactory) {\n _inherits(DOMSVGFactory, _BaseSVGFactory);\n\n var _super4 = _createSuper(DOMSVGFactory);\n\n function DOMSVGFactory() {\n _classCallCheck(this, DOMSVGFactory);\n\n return _super4.apply(this, arguments);\n }\n\n _createClass(DOMSVGFactory, [{\n key: \"_createSVG\",\n value: function _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n }]);\n\n return DOMSVGFactory;\n}(_base_factory.BaseSVGFactory);\n\nexports.DOMSVGFactory = DOMSVGFactory;\n\nvar PageViewport = /*#__PURE__*/function () {\n function PageViewport(_ref2) {\n var viewBox = _ref2.viewBox,\n scale = _ref2.scale,\n rotation = _ref2.rotation,\n _ref2$offsetX = _ref2.offsetX,\n offsetX = _ref2$offsetX === void 0 ? 0 : _ref2$offsetX,\n _ref2$offsetY = _ref2.offsetY,\n offsetY = _ref2$offsetY === void 0 ? 0 : _ref2$offsetY,\n _ref2$dontFlip = _ref2.dontFlip,\n dontFlip = _ref2$dontFlip === void 0 ? false : _ref2$dontFlip;\n\n _classCallCheck(this, PageViewport);\n\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n var centerX = (viewBox[2] + viewBox[0]) / 2;\n var centerY = (viewBox[3] + viewBox[1]) / 2;\n var rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n\n if (rotation < 0) {\n rotation += 360;\n }\n\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n\n var offsetCanvasX, offsetCanvasY;\n var width, height;\n\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n\n _createClass(PageViewport, [{\n key: \"clone\",\n value: function clone() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$scale = _ref3.scale,\n scale = _ref3$scale === void 0 ? this.scale : _ref3$scale,\n _ref3$rotation = _ref3.rotation,\n rotation = _ref3$rotation === void 0 ? this.rotation : _ref3$rotation,\n _ref3$offsetX = _ref3.offsetX,\n offsetX = _ref3$offsetX === void 0 ? this.offsetX : _ref3$offsetX,\n _ref3$offsetY = _ref3.offsetY,\n offsetY = _ref3$offsetY === void 0 ? this.offsetY : _ref3$offsetY,\n _ref3$dontFlip = _ref3.dontFlip,\n dontFlip = _ref3$dontFlip === void 0 ? false : _ref3$dontFlip;\n\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale: scale,\n rotation: rotation,\n offsetX: offsetX,\n offsetY: offsetY,\n dontFlip: dontFlip\n });\n }\n }, {\n key: \"convertToViewportPoint\",\n value: function convertToViewportPoint(x, y) {\n return _util.Util.applyTransform([x, y], this.transform);\n }\n }, {\n key: \"convertToViewportRectangle\",\n value: function convertToViewportRectangle(rect) {\n var topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);\n\n var bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);\n\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n }, {\n key: \"convertToPdfPoint\",\n value: function convertToPdfPoint(x, y) {\n return _util.Util.applyInverseTransform([x, y], this.transform);\n }\n }]);\n\n return PageViewport;\n}();\n\nexports.PageViewport = PageViewport;\n\nvar RenderingCancelledException = /*#__PURE__*/function (_BaseException) {\n _inherits(RenderingCancelledException, _BaseException);\n\n var _super5 = _createSuper(RenderingCancelledException);\n\n function RenderingCancelledException(msg, type) {\n var _this2;\n\n _classCallCheck(this, RenderingCancelledException);\n\n _this2 = _super5.call(this, msg, \"RenderingCancelledException\");\n _this2.type = type;\n return _this2;\n }\n\n return RenderingCancelledException;\n}(_util.BaseException);\n\nexports.RenderingCancelledException = RenderingCancelledException;\nvar LinkTarget = {\n NONE: 0,\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4\n};\nexports.LinkTarget = LinkTarget;\n\nfunction addLinkAttributes(link) {\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n url = _ref4.url,\n target = _ref4.target,\n rel = _ref4.rel,\n _ref4$enabled = _ref4.enabled,\n enabled = _ref4$enabled === void 0 ? true : _ref4$enabled;\n\n (0, _util.assert)(url && typeof url === \"string\", 'addLinkAttributes: A valid \"url\" parameter must provided.');\n var urlNullRemoved = (0, _util.removeNullCharacters)(url);\n\n if (enabled) {\n link.href = link.title = urlNullRemoved;\n } else {\n link.href = \"\";\n link.title = \"Disabled: \".concat(urlNullRemoved);\n\n link.onclick = function () {\n return false;\n };\n }\n\n var targetStr = \"\";\n\n switch (target) {\n case LinkTarget.NONE:\n break;\n\n case LinkTarget.SELF:\n targetStr = \"_self\";\n break;\n\n case LinkTarget.BLANK:\n targetStr = \"_blank\";\n break;\n\n case LinkTarget.PARENT:\n targetStr = \"_parent\";\n break;\n\n case LinkTarget.TOP:\n targetStr = \"_top\";\n break;\n }\n\n link.target = targetStr;\n link.rel = typeof rel === \"string\" ? rel : DEFAULT_LINK_REL;\n}\n\nfunction isDataScheme(url) {\n var ii = url.length;\n var i = 0;\n\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\n\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\nfunction getFilenameFromUrl(url) {\n var anchor = url.indexOf(\"#\");\n var query = url.indexOf(\"?\");\n var end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);\n return url.substring(url.lastIndexOf(\"/\", end) + 1, end);\n}\n\nfunction getPdfFilenameFromUrl(url) {\n var defaultFilename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"document.pdf\";\n\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n\n if (isDataScheme(url)) {\n (0, _util.warn)('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n\n var reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n var reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n var splitURI = reURI.exec(url);\n var suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n\n if (suggestedFilename.includes(\"%\")) {\n try {\n suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n } catch (ex) {}\n }\n }\n\n return suggestedFilename || defaultFilename;\n}\n\nvar StatTimer = /*#__PURE__*/function () {\n function StatTimer() {\n _classCallCheck(this, StatTimer);\n\n this.started = Object.create(null);\n this.times = [];\n }\n\n _createClass(StatTimer, [{\n key: \"time\",\n value: function time(name) {\n if (name in this.started) {\n (0, _util.warn)(\"Timer is already running for \".concat(name));\n }\n\n this.started[name] = Date.now();\n }\n }, {\n key: \"timeEnd\",\n value: function timeEnd(name) {\n if (!(name in this.started)) {\n (0, _util.warn)(\"Timer has not been started for \".concat(name));\n }\n\n this.times.push({\n name: name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n }, {\n key: \"toString\",\n value: function toString() {\n var outBuf = [];\n var longest = 0;\n\n var _iterator = _createForOfIteratorHelper(this.times),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var time = _step.value;\n var name = time.name;\n\n if (name.length > longest) {\n longest = name.length;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n var _iterator2 = _createForOfIteratorHelper(this.times),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _time = _step2.value;\n var duration = _time.end - _time.start;\n outBuf.push(\"\".concat(_time.name.padEnd(longest), \" \").concat(duration, \"ms\\n\"));\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return outBuf.join(\"\");\n }\n }]);\n\n return StatTimer;\n}();\n\nexports.StatTimer = StatTimer;\n\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n var _ref5 = baseUrl ? new URL(url, baseUrl) : new URL(url),\n protocol = _ref5.protocol;\n\n return protocol === \"http:\" || protocol === \"https:\";\n } catch (ex) {\n return false;\n }\n}\n\nfunction loadScript(src) {\n var removeScriptElement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return new Promise(function (resolve, reject) {\n var script = document.createElement(\"script\");\n script.src = src;\n\n script.onload = function (evt) {\n if (removeScriptElement) {\n script.remove();\n }\n\n resolve(evt);\n };\n\n script.onerror = function () {\n reject(new Error(\"Cannot load script at: \".concat(script.src)));\n };\n\n (document.head || document.documentElement).appendChild(script);\n });\n}\n\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nvar pdfDateStringRegex;\n\nvar PDFDateString = /*#__PURE__*/function () {\n function PDFDateString() {\n _classCallCheck(this, PDFDateString);\n }\n\n _createClass(PDFDateString, null, [{\n key: \"toDateObject\",\n value: function toDateObject(input) {\n if (!input || !(0, _util.isString)(input)) {\n return null;\n }\n\n if (!pdfDateStringRegex) {\n pdfDateStringRegex = new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n }\n\n var matches = pdfDateStringRegex.exec(input);\n\n if (!matches) {\n return null;\n }\n\n var year = parseInt(matches[1], 10);\n var month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n var day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n var hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n var minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n var second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n var universalTimeRelation = matches[7] || \"Z\";\n var offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n var offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n }]);\n\n return PDFDateString;\n}();\n\nexports.PDFDateString = PDFDateString;\n\nfunction getXfaPageViewport(xfaPage, _ref6) {\n var _ref6$scale = _ref6.scale,\n scale = _ref6$scale === void 0 ? 1 : _ref6$scale,\n _ref6$rotation = _ref6.rotation,\n rotation = _ref6$rotation === void 0 ? 0 : _ref6$rotation;\n var _xfaPage$attributes$s = xfaPage.attributes.style,\n width = _xfaPage$attributes$s.width,\n height = _xfaPage$attributes$s.height;\n var viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox: viewBox,\n scale: scale,\n rotation: rotation\n });\n}\n\n/***/ }),\n/* 2 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nmodule.exports = __w_pdfjs_require__(3);\n\n/***/ }),\n/* 3 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n/* module decorator */ module = __w_pdfjs_require__.nmd(module);\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar runtime = function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined;\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n return generator;\n }\n\n exports.wrap = wrap;\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n var ContinueSentinel = {};\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {}\n\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n\n if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\");\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function (genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === \"GeneratorFunction\" : false;\n };\n\n exports.mark = function (genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n exports.awrap = function (arg) {\n return {\n __await: arg\n };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n\n if (value && _typeof(value) === \"object\" && hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped;\n resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n context.sent = context._sent = context.arg;\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n var record = tryCatch(innerFn, self, context);\n\n if (record.type === \"normal\") {\n state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (method === undefined) {\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator[\"return\"]) {\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (!info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n context[delegate.resultName] = info.value;\n context.next = delegate.nextLoc;\n\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n } else {\n return info;\n }\n\n context.delegate = null;\n return ContinueSentinel;\n }\n\n defineIteratorMethods(Gp);\n define(Gp, toStringTagSymbol, \"Generator\");\n define(Gp, iteratorSymbol, function () {\n return this;\n });\n define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n keys.reverse();\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n return next;\n };\n\n return next.next = next;\n }\n }\n\n return {\n next: doneResult\n };\n }\n\n exports.values = values;\n\n function doneResult() {\n return {\n value: undefined,\n done: true\n };\n }\n\n Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n this.method = \"next\";\n this.arg = undefined;\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n if (name.charAt(0) === \"t\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n stop: function stop() {\n this.done = true;\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" || record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n }\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n return exports;\n}(( false ? 0 : _typeof(module)) === \"object\" ? module.exports : {});\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if ((typeof globalThis === \"undefined\" ? \"undefined\" : _typeof(globalThis)) === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;\nexports.arrayByteLength = arrayByteLength;\nexports.arraysToBytes = arraysToBytes;\nexports.assert = assert;\nexports.bytesToString = bytesToString;\nexports.createObjectURL = createObjectURL;\nexports.createPromiseCapability = createPromiseCapability;\nexports.createValidAbsoluteUrl = createValidAbsoluteUrl;\nexports.escapeString = escapeString;\nexports.getModificationDate = getModificationDate;\nexports.getVerbosityLevel = getVerbosityLevel;\nexports.info = info;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isArrayEqual = isArrayEqual;\nexports.isAscii = isAscii;\nexports.isBool = isBool;\nexports.isNum = isNum;\nexports.isSameOrigin = isSameOrigin;\nexports.isString = isString;\nexports.objectFromMap = objectFromMap;\nexports.objectSize = objectSize;\nexports.removeNullCharacters = removeNullCharacters;\nexports.setVerbosityLevel = setVerbosityLevel;\nexports.shadow = shadow;\nexports.string32 = string32;\nexports.stringToBytes = stringToBytes;\nexports.stringToPDFString = stringToPDFString;\nexports.stringToUTF16BEString = stringToUTF16BEString;\nexports.stringToUTF8String = stringToUTF8String;\nexports.unreachable = unreachable;\nexports.utf8StringToString = utf8StringToString;\nexports.warn = warn;\n\n__w_pdfjs_require__(5);\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nexports.IDENTITY_MATRIX = IDENTITY_MATRIX;\nvar FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nexports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;\nvar RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100\n};\nexports.RenderingIntentFlag = RenderingIntentFlag;\nvar AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nexports.AnnotationMode = AnnotationMode;\nvar PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nexports.PermissionFlag = PermissionFlag;\nvar TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nexports.TextRenderingMode = TextRenderingMode;\nvar ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nexports.ImageKind = ImageKind;\nvar AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nexports.AnnotationType = AnnotationType;\nvar AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\"\n};\nexports.AnnotationStateModelType = AnnotationStateModelType;\nvar AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\"\n};\nexports.AnnotationMarkedState = AnnotationMarkedState;\nvar AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\"\n};\nexports.AnnotationReviewState = AnnotationReviewState;\nvar AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nexports.AnnotationReplyType = AnnotationReplyType;\nvar AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nexports.AnnotationFlag = AnnotationFlag;\nvar AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nexports.AnnotationFieldFlag = AnnotationFieldFlag;\nvar AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nexports.AnnotationBorderStyleType = AnnotationBorderStyleType;\nvar AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nexports.AnnotationActionEventType = AnnotationActionEventType;\nvar DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nexports.DocumentActionEventType = DocumentActionEventType;\nvar PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nexports.PageActionEventType = PageActionEventType;\nvar StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\"\n};\nexports.StreamType = StreamType;\nvar FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\"\n};\nexports.FontType = FontType;\nvar VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nexports.VerbosityLevel = VerbosityLevel;\nvar CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2\n};\nexports.CMapCompressionType = CMapCompressionType;\nvar OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91\n};\nexports.OPS = OPS;\nvar UNSUPPORTED_FEATURES = {\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\"\n};\nexports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;\nvar PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nexports.PasswordResponses = PasswordResponses;\nvar verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(\"Info: \".concat(msg));\n }\n}\n\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(\"Warning: \".concat(msg));\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\nfunction isSameOrigin(baseUrl, otherUrl) {\n var base;\n\n try {\n base = new URL(baseUrl);\n\n if (!base.origin || base.origin === \"null\") {\n return false;\n }\n } catch (e) {\n return false;\n }\n\n var other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n\n default:\n return false;\n }\n}\n\nfunction createValidAbsoluteUrl(url) {\n var baseUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!url) {\n return null;\n }\n\n try {\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n var dots = url.match(/\\./g);\n\n if (dots && dots.length >= 2) {\n url = \"http://\".concat(url);\n }\n }\n\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n var absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {}\n\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: false\n });\n return value;\n}\n\nvar BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n\n this.message = message;\n this.name = name;\n }\n\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\n\nexports.BaseException = BaseException;\n\nvar PasswordException = /*#__PURE__*/function (_BaseException) {\n _inherits(PasswordException, _BaseException);\n\n var _super = _createSuper(PasswordException);\n\n function PasswordException(msg, code) {\n var _this;\n\n _classCallCheck(this, PasswordException);\n\n _this = _super.call(this, msg, \"PasswordException\");\n _this.code = code;\n return _this;\n }\n\n return PasswordException;\n}(BaseException);\n\nexports.PasswordException = PasswordException;\n\nvar UnknownErrorException = /*#__PURE__*/function (_BaseException2) {\n _inherits(UnknownErrorException, _BaseException2);\n\n var _super2 = _createSuper(UnknownErrorException);\n\n function UnknownErrorException(msg, details) {\n var _this2;\n\n _classCallCheck(this, UnknownErrorException);\n\n _this2 = _super2.call(this, msg, \"UnknownErrorException\");\n _this2.details = details;\n return _this2;\n }\n\n return UnknownErrorException;\n}(BaseException);\n\nexports.UnknownErrorException = UnknownErrorException;\n\nvar InvalidPDFException = /*#__PURE__*/function (_BaseException3) {\n _inherits(InvalidPDFException, _BaseException3);\n\n var _super3 = _createSuper(InvalidPDFException);\n\n function InvalidPDFException(msg) {\n _classCallCheck(this, InvalidPDFException);\n\n return _super3.call(this, msg, \"InvalidPDFException\");\n }\n\n return InvalidPDFException;\n}(BaseException);\n\nexports.InvalidPDFException = InvalidPDFException;\n\nvar MissingPDFException = /*#__PURE__*/function (_BaseException4) {\n _inherits(MissingPDFException, _BaseException4);\n\n var _super4 = _createSuper(MissingPDFException);\n\n function MissingPDFException(msg) {\n _classCallCheck(this, MissingPDFException);\n\n return _super4.call(this, msg, \"MissingPDFException\");\n }\n\n return MissingPDFException;\n}(BaseException);\n\nexports.MissingPDFException = MissingPDFException;\n\nvar UnexpectedResponseException = /*#__PURE__*/function (_BaseException5) {\n _inherits(UnexpectedResponseException, _BaseException5);\n\n var _super5 = _createSuper(UnexpectedResponseException);\n\n function UnexpectedResponseException(msg, status) {\n var _this3;\n\n _classCallCheck(this, UnexpectedResponseException);\n\n _this3 = _super5.call(this, msg, \"UnexpectedResponseException\");\n _this3.status = status;\n return _this3;\n }\n\n return UnexpectedResponseException;\n}(BaseException);\n\nexports.UnexpectedResponseException = UnexpectedResponseException;\n\nvar FormatError = /*#__PURE__*/function (_BaseException6) {\n _inherits(FormatError, _BaseException6);\n\n var _super6 = _createSuper(FormatError);\n\n function FormatError(msg) {\n _classCallCheck(this, FormatError);\n\n return _super6.call(this, msg, \"FormatError\");\n }\n\n return FormatError;\n}(BaseException);\n\nexports.FormatError = FormatError;\n\nvar AbortException = /*#__PURE__*/function (_BaseException7) {\n _inherits(AbortException, _BaseException7);\n\n var _super7 = _createSuper(AbortException);\n\n function AbortException(msg) {\n _classCallCheck(this, AbortException);\n\n return _super7.call(this, msg, \"AbortException\");\n }\n\n return AbortException;\n}(BaseException);\n\nexports.AbortException = AbortException;\nvar NullCharactersRegExp = /\\x00+/g;\nvar InvisibleCharactersRegExp = /[\\x01-\\x1F]/g;\n\nfunction removeNullCharacters(str) {\n var replaceInvisible = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (typeof str !== \"string\") {\n warn(\"The argument for removeNullCharacters must be a string.\");\n return str;\n }\n\n if (replaceInvisible) {\n str = str.replace(InvisibleCharactersRegExp, \" \");\n }\n\n return str.replace(NullCharactersRegExp, \"\");\n}\n\nfunction bytesToString(bytes) {\n assert(bytes !== null && _typeof(bytes) === \"object\" && bytes.length !== undefined, \"Invalid argument for bytesToString\");\n var length = bytes.length;\n var MAX_ARGUMENT_COUNT = 8192;\n\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n\n var strBuf = [];\n\n for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n var chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === \"string\", \"Invalid argument for stringToBytes\");\n var length = str.length;\n var bytes = new Uint8Array(length);\n\n for (var i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n\n return bytes;\n}\n\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n\n assert(arr.byteLength !== undefined, \"arrayByteLength - invalid argument.\");\n return arr.byteLength;\n}\n\nfunction arraysToBytes(arr) {\n var length = arr.length;\n\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n\n var resultLength = 0;\n\n for (var i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n\n var pos = 0;\n var data = new Uint8Array(resultLength);\n\n for (var _i = 0; _i < length; _i++) {\n var item = arr[_i];\n\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n\n var itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n\n return data;\n}\n\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\nfunction objectFromMap(map) {\n var obj = Object.create(null);\n\n var _iterator = _createForOfIteratorHelper(map),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray(_step.value, 2),\n key = _step$value[0],\n value = _step$value[1];\n\n obj[key] = value;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return obj;\n}\n\nfunction isLittleEndian() {\n var buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n var view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\n\nvar IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n }\n\n};\nexports.IsLittleEndianCached = IsLittleEndianCached;\n\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch (e) {\n return false;\n }\n}\n\nvar IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n }\n\n};\nexports.IsEvalSupportedCached = IsEvalSupportedCached;\n\nvar hexNumbers = _toConsumableArray(Array(256).keys()).map(function (n) {\n return n.toString(16).padStart(2, \"0\");\n});\n\nvar Util = /*#__PURE__*/function () {\n function Util() {\n _classCallCheck(this, Util);\n }\n\n _createClass(Util, null, [{\n key: \"makeHexColor\",\n value: function makeHexColor(r, g, b) {\n return \"#\".concat(hexNumbers[r]).concat(hexNumbers[g]).concat(hexNumbers[b]);\n }\n }, {\n key: \"transform\",\n value: function transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n }, {\n key: \"applyTransform\",\n value: function applyTransform(p, m) {\n var xt = p[0] * m[0] + p[1] * m[2] + m[4];\n var yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n }, {\n key: \"applyInverseTransform\",\n value: function applyInverseTransform(p, m) {\n var d = m[0] * m[3] - m[1] * m[2];\n var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n }, {\n key: \"getAxialAlignedBoundingBox\",\n value: function getAxialAlignedBoundingBox(r, m) {\n var p1 = Util.applyTransform(r, m);\n var p2 = Util.applyTransform(r.slice(2, 4), m);\n var p3 = Util.applyTransform([r[0], r[3]], m);\n var p4 = Util.applyTransform([r[2], r[1]], m);\n return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n }\n }, {\n key: \"inverseTransform\",\n value: function inverseTransform(m) {\n var d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n }, {\n key: \"apply3dTransform\",\n value: function apply3dTransform(m, v) {\n return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];\n }\n }, {\n key: \"singularValueDecompose2dScale\",\n value: function singularValueDecompose2dScale(m) {\n var transpose = [m[0], m[2], m[1], m[3]];\n var a = m[0] * transpose[0] + m[1] * transpose[2];\n var b = m[0] * transpose[1] + m[1] * transpose[3];\n var c = m[2] * transpose[0] + m[3] * transpose[2];\n var d = m[2] * transpose[1] + m[3] * transpose[3];\n var first = (a + d) / 2;\n var second = Math.sqrt(Math.pow(a + d, 2) - 4 * (a * d - c * b)) / 2;\n var sx = first + second || 1;\n var sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n }, {\n key: \"normalizeRect\",\n value: function normalizeRect(rect) {\n var r = rect.slice(0);\n\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n\n return r;\n }\n }, {\n key: \"intersect\",\n value: function intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n var orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n var result = [];\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n }, {\n key: \"bezierBoundingBox\",\n value: function bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n var tvalues = [],\n bounds = [[], []];\n var a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n\n for (var i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n\n t = -c / b;\n\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n\n continue;\n }\n\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n\n if (b2ac < 0) {\n continue;\n }\n\n t1 = (-b + sqrtb2ac) / (2 * a);\n\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n\n t2 = (-b - sqrtb2ac) / (2 * a);\n\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n var j = tvalues.length,\n mt;\n var jlen = j;\n\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;\n bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n return [Math.min.apply(Math, _toConsumableArray(bounds[0])), Math.min.apply(Math, _toConsumableArray(bounds[1])), Math.max.apply(Math, _toConsumableArray(bounds[0])), Math.max.apply(Math, _toConsumableArray(bounds[1]))];\n }\n }]);\n\n return Util;\n}();\n\nexports.Util = Util;\nvar PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac];\n\nfunction stringToPDFString(str) {\n var length = str.length,\n strBuf = [];\n\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n for (var i = 2; i < length; i += 2) {\n strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n for (var _i2 = 2; _i2 < length; _i2 += 2) {\n strBuf.push(String.fromCharCode(str.charCodeAt(_i2 + 1) << 8 | str.charCodeAt(_i2)));\n }\n } else {\n for (var _i3 = 0; _i3 < length; ++_i3) {\n var code = PDFStringTranslateTable[str.charCodeAt(_i3)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(_i3));\n }\n }\n\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n return str.replace(/([()\\\\\\n\\r])/g, function (match) {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n\n return \"\\\\\".concat(match);\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n var buf = [\"\\xFE\\xFF\"];\n\n for (var i = 0, ii = str.length; i < ii; i++) {\n var _char = str.charCodeAt(i);\n\n buf.push(String.fromCharCode(_char >> 8 & 0xff), String.fromCharCode(_char & 0xff));\n }\n\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isBool(v) {\n return typeof v === \"boolean\";\n}\n\nfunction isNum(v) {\n return typeof v === \"number\";\n}\n\nfunction isString(v) {\n return typeof v === \"string\";\n}\n\nfunction isArrayBuffer(v) {\n return _typeof(v) === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n\n for (var i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getModificationDate() {\n var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();\n var buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\n\nfunction createPromiseCapability() {\n var capability = Object.create(null);\n var isSettled = false;\n Object.defineProperty(capability, \"settled\", {\n get: function get() {\n return isSettled;\n }\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nfunction createObjectURL(data) {\n var contentType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (URL.createObjectURL && typeof Blob !== \"undefined\" && !forceDataSchema) {\n return URL.createObjectURL(new Blob([data], {\n type: contentType\n }));\n }\n\n var digits = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var buffer = \"data:\".concat(contentType, \";base64,\");\n\n for (var i = 0, ii = data.length; i < ii; i += 3) {\n var b1 = data[i] & 0xff;\n var b2 = data[i + 1] & 0xff;\n var b3 = data[i + 2] & 0xff;\n var d1 = b1 >> 2,\n d2 = (b1 & 3) << 4 | b2 >> 4;\n var d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;\n var d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n\n return buffer;\n}\n\n/***/ }),\n/* 5 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nvar _is_node = __w_pdfjs_require__(6);\n\nif (typeof globalThis === \"undefined\" || !globalThis._pdfjsCompatibilityChecked) {\n if (typeof globalThis === \"undefined\" || globalThis.Math !== Math) {\n globalThis = __w_pdfjs_require__(7);\n }\n\n globalThis._pdfjsCompatibilityChecked = true;\n\n (function checkNodeBtoa() {\n if (globalThis.btoa || !_is_node.isNodeJS) {\n return;\n }\n\n globalThis.btoa = function (chars) {\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n (function checkNodeAtob() {\n if (globalThis.atob || !_is_node.isNodeJS) {\n return;\n }\n\n globalThis.atob = function (input) {\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !_is_node.isNodeJS) {\n return;\n }\n\n globalThis.DOMMatrix = __w_pdfjs_require__(69);\n })();\n\n (function checkObjectFromEntries() {\n if (Object.fromEntries) {\n return;\n }\n\n __w_pdfjs_require__(70);\n })();\n\n (function checkPromise() {\n if (globalThis.Promise.allSettled) {\n return;\n }\n\n globalThis.Promise = __w_pdfjs_require__(97);\n })();\n\n (function checkReadableStream() {\n if (globalThis.ReadableStream || !_is_node.isNodeJS) {\n return;\n }\n\n globalThis.ReadableStream = (__w_pdfjs_require__(134).ReadableStream);\n })();\n}\n\n/***/ }),\n/* 6 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.isNodeJS = void 0;\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar isNodeJS = (typeof process === \"undefined\" ? \"undefined\" : _typeof(process)) === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nexports.isNodeJS = isNodeJS;\n\n/***/ }),\n/* 7 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n__w_pdfjs_require__(8);\nmodule.exports = __w_pdfjs_require__(10);\n\n/***/ }),\n/* 8 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar $ = __w_pdfjs_require__(9);\nvar global = __w_pdfjs_require__(10);\n$({ global: true }, { globalThis: global });\n\n/***/ }),\n/* 9 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar getOwnPropertyDescriptor = (__w_pdfjs_require__(11).f);\nvar createNonEnumerableProperty = __w_pdfjs_require__(47);\nvar redefine = __w_pdfjs_require__(50);\nvar setGlobal = __w_pdfjs_require__(41);\nvar copyConstructorProperties = __w_pdfjs_require__(57);\nvar isForced = __w_pdfjs_require__(68);\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target)\n for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else\n targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty)\n continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n if (options.sham || targetProperty && targetProperty.sham) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n redefine(target, key, sourceProperty, options);\n }\n};\n\n/***/ }),\n/* 10 */\n/***/ ((module) => {\n\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\nmodule.exports = check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || check(typeof self == 'object' && self) || check(typeof global == 'object' && global) || (function () {\n return this;\n}()) || Function('return this')();\n\n/***/ }),\n/* 11 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\nvar DESCRIPTORS = __w_pdfjs_require__(12);\nvar call = __w_pdfjs_require__(14);\nvar propertyIsEnumerableModule = __w_pdfjs_require__(15);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar toPropertyKey = __w_pdfjs_require__(22);\nvar hasOwn = __w_pdfjs_require__(42);\nvar IE8_DOM_DEFINE = __w_pdfjs_require__(45);\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE)\n try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) {\n }\n if (hasOwn(O, P))\n return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n\n/***/ }),\n/* 12 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar fails = __w_pdfjs_require__(13);\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, {\n get: function () {\n return 7;\n }\n })[1] != 7;\n});\n\n/***/ }),\n/* 13 */\n/***/ ((module) => {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n/***/ }),\n/* 14 */\n/***/ ((module) => {\n\nvar call = Function.prototype.call;\nmodule.exports = call.bind ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n\n/***/ }),\n/* 15 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\n\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\n/***/ }),\n/* 16 */\n/***/ ((module) => {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n/***/ }),\n/* 17 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar IndexedObject = __w_pdfjs_require__(18);\nvar requireObjectCoercible = __w_pdfjs_require__(21);\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n/***/ }),\n/* 18 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar uncurryThis = __w_pdfjs_require__(19);\nvar fails = __w_pdfjs_require__(13);\nvar classof = __w_pdfjs_require__(20);\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\nmodule.exports = fails(function () {\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n\n/***/ }),\n/* 19 */\n/***/ ((module) => {\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar callBind = bind && bind.bind(call);\nmodule.exports = bind ? function (fn) {\n return fn && callBind(call, fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n\n/***/ }),\n/* 20 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar uncurryThis = __w_pdfjs_require__(19);\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n\n/***/ }),\n/* 21 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar TypeError = global.TypeError;\nmodule.exports = function (it) {\n if (it == undefined)\n throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n/***/ }),\n/* 22 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar toPrimitive = __w_pdfjs_require__(23);\nvar isSymbol = __w_pdfjs_require__(26);\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n\n/***/ }),\n/* 23 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar call = __w_pdfjs_require__(14);\nvar isObject = __w_pdfjs_require__(24);\nvar isSymbol = __w_pdfjs_require__(26);\nvar getMethod = __w_pdfjs_require__(33);\nvar ordinaryToPrimitive = __w_pdfjs_require__(36);\nvar wellKnownSymbol = __w_pdfjs_require__(37);\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input))\n return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined)\n pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result))\n return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined)\n pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n\n/***/ }),\n/* 24 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar isCallable = __w_pdfjs_require__(25);\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\n/***/ }),\n/* 25 */\n/***/ ((module) => {\n\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n\n/***/ }),\n/* 26 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar getBuiltIn = __w_pdfjs_require__(27);\nvar isCallable = __w_pdfjs_require__(25);\nvar isPrototypeOf = __w_pdfjs_require__(28);\nvar USE_SYMBOL_AS_UID = __w_pdfjs_require__(29);\nvar Object = global.Object;\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n\n/***/ }),\n/* 27 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar isCallable = __w_pdfjs_require__(25);\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n\n/***/ }),\n/* 28 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar uncurryThis = __w_pdfjs_require__(19);\nmodule.exports = uncurryThis({}.isPrototypeOf);\n\n/***/ }),\n/* 29 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar NATIVE_SYMBOL = __w_pdfjs_require__(30);\nmodule.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == 'symbol';\n\n/***/ }),\n/* 30 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar V8_VERSION = __w_pdfjs_require__(31);\nvar fails = __w_pdfjs_require__(13);\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n return !String(symbol) || !(Object(symbol) instanceof Symbol) || !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n\n/***/ }),\n/* 31 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar userAgent = __w_pdfjs_require__(32);\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\nif (v8) {\n match = v8.split('.');\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match)\n version = +match[1];\n }\n}\nmodule.exports = version;\n\n/***/ }),\n/* 32 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar getBuiltIn = __w_pdfjs_require__(27);\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n/***/ }),\n/* 33 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar aCallable = __w_pdfjs_require__(34);\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n\n/***/ }),\n/* 34 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar isCallable = __w_pdfjs_require__(25);\nvar tryToString = __w_pdfjs_require__(35);\nvar TypeError = global.TypeError;\nmodule.exports = function (argument) {\n if (isCallable(argument))\n return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n\n/***/ }),\n/* 35 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar String = global.String;\nmodule.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n\n/***/ }),\n/* 36 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar call = __w_pdfjs_require__(14);\nvar isCallable = __w_pdfjs_require__(25);\nvar isObject = __w_pdfjs_require__(24);\nvar TypeError = global.TypeError;\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input)))\n return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input)))\n return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input)))\n return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n/***/ }),\n/* 37 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar shared = __w_pdfjs_require__(38);\nvar hasOwn = __w_pdfjs_require__(42);\nvar uid = __w_pdfjs_require__(44);\nvar NATIVE_SYMBOL = __w_pdfjs_require__(30);\nvar USE_SYMBOL_AS_UID = __w_pdfjs_require__(29);\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n }\n return WellKnownSymbolsStore[name];\n};\n\n/***/ }),\n/* 38 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar IS_PURE = __w_pdfjs_require__(39);\nvar store = __w_pdfjs_require__(40);\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.19.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n\n/***/ }),\n/* 39 */\n/***/ ((module) => {\n\nmodule.exports = false;\n\n/***/ }),\n/* 40 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar setGlobal = __w_pdfjs_require__(41);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\nmodule.exports = store;\n\n/***/ }),\n/* 41 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar defineProperty = Object.defineProperty;\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, {\n value: value,\n configurable: true,\n writable: true\n });\n } catch (error) {\n global[key] = value;\n }\n return value;\n};\n\n/***/ }),\n/* 42 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar uncurryThis = __w_pdfjs_require__(19);\nvar toObject = __w_pdfjs_require__(43);\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n\n/***/ }),\n/* 43 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar requireObjectCoercible = __w_pdfjs_require__(21);\nvar Object = global.Object;\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n\n/***/ }),\n/* 44 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar uncurryThis = __w_pdfjs_require__(19);\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\n/***/ }),\n/* 45 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar DESCRIPTORS = __w_pdfjs_require__(12);\nvar fails = __w_pdfjs_require__(13);\nvar createElement = __w_pdfjs_require__(46);\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () {\n return 7;\n }\n }).a != 7;\n});\n\n/***/ }),\n/* 46 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar isObject = __w_pdfjs_require__(24);\nvar document = global.document;\nvar EXISTS = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n/***/ }),\n/* 47 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar DESCRIPTORS = __w_pdfjs_require__(12);\nvar definePropertyModule = __w_pdfjs_require__(48);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n/***/ }),\n/* 48 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar DESCRIPTORS = __w_pdfjs_require__(12);\nvar IE8_DOM_DEFINE = __w_pdfjs_require__(45);\nvar anObject = __w_pdfjs_require__(49);\nvar toPropertyKey = __w_pdfjs_require__(22);\nvar TypeError = global.TypeError;\nvar $defineProperty = Object.defineProperty;\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE)\n try {\n return $defineProperty(O, P, Attributes);\n } catch (error) {\n }\n if ('get' in Attributes || 'set' in Attributes)\n throw TypeError('Accessors not supported');\n if ('value' in Attributes)\n O[P] = Attributes.value;\n return O;\n};\n\n/***/ }),\n/* 49 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar isObject = __w_pdfjs_require__(24);\nvar String = global.String;\nvar TypeError = global.TypeError;\nmodule.exports = function (argument) {\n if (isObject(argument))\n return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n\n/***/ }),\n/* 50 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar isCallable = __w_pdfjs_require__(25);\nvar hasOwn = __w_pdfjs_require__(42);\nvar createNonEnumerableProperty = __w_pdfjs_require__(47);\nvar setGlobal = __w_pdfjs_require__(41);\nvar inspectSource = __w_pdfjs_require__(51);\nvar InternalStateModule = __w_pdfjs_require__(52);\nvar CONFIGURABLE_FUNCTION_NAME = (__w_pdfjs_require__(56).CONFIGURABLE);\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var name = options && options.name !== undefined ? options.name : key;\n var state;\n if (isCallable(value)) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (!hasOwn(value, 'name') || CONFIGURABLE_FUNCTION_NAME && value.name !== name) {\n createNonEnumerableProperty(value, 'name', name);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n }\n }\n if (O === global) {\n if (simple)\n O[key] = value;\n else\n setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple)\n O[key] = value;\n else\n createNonEnumerableProperty(O, key, value);\n})(Function.prototype, 'toString', function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n\n/***/ }),\n/* 51 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar uncurryThis = __w_pdfjs_require__(19);\nvar isCallable = __w_pdfjs_require__(25);\nvar store = __w_pdfjs_require__(40);\nvar functionToString = uncurryThis(Function.toString);\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\nmodule.exports = store.inspectSource;\n\n/***/ }),\n/* 52 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar NATIVE_WEAK_MAP = __w_pdfjs_require__(53);\nvar global = __w_pdfjs_require__(10);\nvar uncurryThis = __w_pdfjs_require__(19);\nvar isObject = __w_pdfjs_require__(24);\nvar createNonEnumerableProperty = __w_pdfjs_require__(47);\nvar hasOwn = __w_pdfjs_require__(42);\nvar shared = __w_pdfjs_require__(40);\nvar sharedKey = __w_pdfjs_require__(54);\nvar hiddenKeys = __w_pdfjs_require__(55);\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n }\n return state;\n };\n};\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it))\n throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE))\n throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n/***/ }),\n/* 53 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar isCallable = __w_pdfjs_require__(25);\nvar inspectSource = __w_pdfjs_require__(51);\nvar WeakMap = global.WeakMap;\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n\n/***/ }),\n/* 54 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar shared = __w_pdfjs_require__(38);\nvar uid = __w_pdfjs_require__(44);\nvar keys = shared('keys');\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n/***/ }),\n/* 55 */\n/***/ ((module) => {\n\nmodule.exports = {};\n\n/***/ }),\n/* 56 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar DESCRIPTORS = __w_pdfjs_require__(12);\nvar hasOwn = __w_pdfjs_require__(42);\nvar FunctionPrototype = Function.prototype;\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\nvar PROPER = EXISTS && function something() {\n}.name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable);\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n\n/***/ }),\n/* 57 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar hasOwn = __w_pdfjs_require__(42);\nvar ownKeys = __w_pdfjs_require__(58);\nvar getOwnPropertyDescriptorModule = __w_pdfjs_require__(11);\nvar definePropertyModule = __w_pdfjs_require__(48);\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key))\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n\n/***/ }),\n/* 58 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar getBuiltIn = __w_pdfjs_require__(27);\nvar uncurryThis = __w_pdfjs_require__(19);\nvar getOwnPropertyNamesModule = __w_pdfjs_require__(59);\nvar getOwnPropertySymbolsModule = __w_pdfjs_require__(67);\nvar anObject = __w_pdfjs_require__(49);\nvar concat = uncurryThis([].concat);\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\n/***/ }),\n/* 59 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\nvar internalObjectKeys = __w_pdfjs_require__(60);\nvar enumBugKeys = __w_pdfjs_require__(66);\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n/***/ }),\n/* 60 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar uncurryThis = __w_pdfjs_require__(19);\nvar hasOwn = __w_pdfjs_require__(42);\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar indexOf = (__w_pdfjs_require__(61).indexOf);\nvar hiddenKeys = __w_pdfjs_require__(55);\nvar push = uncurryThis([].push);\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O)\n !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n while (names.length > i)\n if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n\n/***/ }),\n/* 61 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar toAbsoluteIndex = __w_pdfjs_require__(62);\nvar lengthOfArrayLike = __w_pdfjs_require__(64);\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n if (IS_INCLUDES && el != el)\n while (length > index) {\n value = O[index++];\n if (value != value)\n return true;\n }\n else\n for (; length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el)\n return IS_INCLUDES || index || 0;\n }\n return !IS_INCLUDES && -1;\n };\n};\nmodule.exports = {\n includes: createMethod(true),\n indexOf: createMethod(false)\n};\n\n/***/ }),\n/* 62 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar toIntegerOrInfinity = __w_pdfjs_require__(63);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n/***/ }),\n/* 63 */\n/***/ ((module) => {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (argument) {\n var number = +argument;\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n\n/***/ }),\n/* 64 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar toLength = __w_pdfjs_require__(65);\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n\n/***/ }),\n/* 65 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar toIntegerOrInfinity = __w_pdfjs_require__(63);\nvar min = Math.min;\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0;\n};\n\n/***/ }),\n/* 66 */\n/***/ ((module) => {\n\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n/***/ }),\n/* 67 */\n/***/ ((__unused_webpack_module, exports) => {\n\nexports.f = Object.getOwnPropertySymbols;\n\n/***/ }),\n/* 68 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar fails = __w_pdfjs_require__(13);\nvar isCallable = __w_pdfjs_require__(25);\nvar replacement = /#|\\.prototype\\./;\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true : value == NATIVE ? false : isCallable(detection) ? fails(detection) : !!detection;\n};\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\nmodule.exports = isForced;\n\n/***/ }),\n/* 69 */\n/***/ ((module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n(function (global, factory) {\n ( false ? 0 : _typeof(exports)) === 'object' && \"object\" !== 'undefined' ? module.exports = factory() : true ? !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __w_pdfjs_require__, exports, module)) :\n\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : (0);\n})(void 0, function () {\n 'use strict';\n\n function fromArray(array) {\n var m = new CSSMatrix();\n var a = Array.from(array);\n\n if (!a.every(function (n) {\n return !Number.isNaN(n);\n })) {\n throw TypeError(\"CSSMatrix: \\\"\" + array + \"\\\" must only have numbers.\");\n }\n\n if (a.length === 16) {\n var m11 = a[0];\n var m12 = a[1];\n var m13 = a[2];\n var m14 = a[3];\n var m21 = a[4];\n var m22 = a[5];\n var m23 = a[6];\n var m24 = a[7];\n var m31 = a[8];\n var m32 = a[9];\n var m33 = a[10];\n var m34 = a[11];\n var m41 = a[12];\n var m42 = a[13];\n var m43 = a[14];\n var m44 = a[15];\n m.m11 = m11;\n m.a = m11;\n m.m21 = m21;\n m.c = m21;\n m.m31 = m31;\n m.m41 = m41;\n m.e = m41;\n m.m12 = m12;\n m.b = m12;\n m.m22 = m22;\n m.d = m22;\n m.m32 = m32;\n m.m42 = m42;\n m.f = m42;\n m.m13 = m13;\n m.m23 = m23;\n m.m33 = m33;\n m.m43 = m43;\n m.m14 = m14;\n m.m24 = m24;\n m.m34 = m34;\n m.m44 = m44;\n } else if (a.length === 6) {\n var M11 = a[0];\n var M12 = a[1];\n var M21 = a[2];\n var M22 = a[3];\n var M41 = a[4];\n var M42 = a[5];\n m.m11 = M11;\n m.a = M11;\n m.m12 = M12;\n m.b = M12;\n m.m21 = M21;\n m.c = M21;\n m.m22 = M22;\n m.d = M22;\n m.m41 = M41;\n m.e = M41;\n m.m42 = M42;\n m.f = M42;\n } else {\n throw new TypeError('CSSMatrix: expecting an Array of 6/16 values.');\n }\n\n return m;\n }\n\n function fromMatrix(m) {\n var keys = Object.keys(new CSSMatrix());\n\n if (_typeof(m) === 'object' && keys.every(function (k) {\n return k in m;\n })) {\n return fromArray([m.m11, m.m12, m.m13, m.m14, m.m21, m.m22, m.m23, m.m24, m.m31, m.m32, m.m33, m.m34, m.m41, m.m42, m.m43, m.m44]);\n }\n\n throw TypeError(\"CSSMatrix: \\\"\" + m + \"\\\" is not a DOMMatrix / CSSMatrix / JSON compatible object.\");\n }\n\n function fromString(source) {\n if (typeof source !== 'string') {\n throw TypeError(\"CSSMatrix: \\\"\" + source + \"\\\" is not a string.\");\n }\n\n var str = String(source).replace(/\\s/g, '');\n var m = new CSSMatrix();\n var invalidStringError = \"CSSMatrix: invalid transform string \\\"\" + source + \"\\\"\";\n str.split(')').filter(function (f) {\n return f;\n }).forEach(function (tf) {\n var ref = tf.split('(');\n var prop = ref[0];\n var value = ref[1];\n\n if (!value) {\n throw TypeError(invalidStringError);\n }\n\n var components = value.split(',').map(function (n) {\n return n.includes('rad') ? parseFloat(n) * (180 / Math.PI) : parseFloat(n);\n });\n var x = components[0];\n var y = components[1];\n var z = components[2];\n var a = components[3];\n var xyz = [x, y, z];\n var xyza = [x, y, z, a];\n\n if (prop === 'perspective' && x && [y, z].every(function (n) {\n return n === undefined;\n })) {\n m.m34 = -1 / x;\n } else if (prop.includes('matrix') && [6, 16].includes(components.length) && components.every(function (n) {\n return !Number.isNaN(+n);\n })) {\n var values = components.map(function (n) {\n return Math.abs(n) < 1e-6 ? 0 : n;\n });\n m = m.multiply(fromArray(values));\n } else if (prop === 'translate3d' && xyz.every(function (n) {\n return !Number.isNaN(+n);\n })) {\n m = m.translate(x, y, z);\n } else if (prop === 'translate' && x && z === undefined) {\n m = m.translate(x, y || 0, 0);\n } else if (prop === 'rotate3d' && xyza.every(function (n) {\n return !Number.isNaN(+n);\n }) && a) {\n m = m.rotateAxisAngle(x, y, z, a);\n } else if (prop === 'rotate' && x && [y, z].every(function (n) {\n return n === undefined;\n })) {\n m = m.rotate(0, 0, x);\n } else if (prop === 'scale3d' && xyz.every(function (n) {\n return !Number.isNaN(+n);\n }) && xyz.some(function (n) {\n return n !== 1;\n })) {\n m = m.scale(x, y, z);\n } else if (prop === 'scale' && !Number.isNaN(x) && x !== 1 && z === undefined) {\n var nosy = Number.isNaN(+y);\n var sy = nosy ? x : y;\n m = m.scale(x, sy, 1);\n } else if (prop === 'skew' && x && z === undefined) {\n m = m.skewX(x);\n m = y ? m.skewY(y) : m;\n } else if (/[XYZ]/.test(prop) && x && [y, z].every(function (n) {\n return n === undefined;\n }) && ['translate', 'rotate', 'scale', 'skew'].some(function (p) {\n return prop.includes(p);\n })) {\n if (['skewX', 'skewY'].includes(prop)) {\n m = m[prop](x);\n } else {\n var fn = prop.replace(/[XYZ]/, '');\n var axis = prop.replace(fn, '');\n var idx = ['X', 'Y', 'Z'].indexOf(axis);\n var axeValues = [idx === 0 ? x : 0, idx === 1 ? x : 0, idx === 2 ? x : 0];\n m = m[fn].apply(m, axeValues);\n }\n } else {\n throw TypeError(invalidStringError);\n }\n });\n return m;\n }\n\n function Translate(x, y, z) {\n var m = new CSSMatrix();\n m.m41 = x;\n m.e = x;\n m.m42 = y;\n m.f = y;\n m.m43 = z;\n return m;\n }\n\n function Rotate(rx, ry, rz) {\n var m = new CSSMatrix();\n var degToRad = Math.PI / 180;\n var radX = rx * degToRad;\n var radY = ry * degToRad;\n var radZ = rz * degToRad;\n var cosx = Math.cos(radX);\n var sinx = -Math.sin(radX);\n var cosy = Math.cos(radY);\n var siny = -Math.sin(radY);\n var cosz = Math.cos(radZ);\n var sinz = -Math.sin(radZ);\n var m11 = cosy * cosz;\n var m12 = -cosy * sinz;\n m.m11 = m11;\n m.a = m11;\n m.m12 = m12;\n m.b = m12;\n m.m13 = siny;\n var m21 = sinx * siny * cosz + cosx * sinz;\n m.m21 = m21;\n m.c = m21;\n var m22 = cosx * cosz - sinx * siny * sinz;\n m.m22 = m22;\n m.d = m22;\n m.m23 = -sinx * cosy;\n m.m31 = sinx * sinz - cosx * siny * cosz;\n m.m32 = sinx * cosz + cosx * siny * sinz;\n m.m33 = cosx * cosy;\n return m;\n }\n\n function RotateAxisAngle(x, y, z, alpha) {\n var m = new CSSMatrix();\n var angle = alpha * (Math.PI / 360);\n var sinA = Math.sin(angle);\n var cosA = Math.cos(angle);\n var sinA2 = sinA * sinA;\n var length = Math.sqrt(x * x + y * y + z * z);\n var X = x;\n var Y = y;\n var Z = z;\n\n if (length === 0) {\n X = 0;\n Y = 0;\n Z = 1;\n } else {\n X /= length;\n Y /= length;\n Z /= length;\n }\n\n var x2 = X * X;\n var y2 = Y * Y;\n var z2 = Z * Z;\n var m11 = 1 - 2 * (y2 + z2) * sinA2;\n m.m11 = m11;\n m.a = m11;\n var m12 = 2 * (X * Y * sinA2 + Z * sinA * cosA);\n m.m12 = m12;\n m.b = m12;\n m.m13 = 2 * (X * Z * sinA2 - Y * sinA * cosA);\n var m21 = 2 * (Y * X * sinA2 - Z * sinA * cosA);\n m.m21 = m21;\n m.c = m21;\n var m22 = 1 - 2 * (z2 + x2) * sinA2;\n m.m22 = m22;\n m.d = m22;\n m.m23 = 2 * (Y * Z * sinA2 + X * sinA * cosA);\n m.m31 = 2 * (Z * X * sinA2 + Y * sinA * cosA);\n m.m32 = 2 * (Z * Y * sinA2 - X * sinA * cosA);\n m.m33 = 1 - 2 * (x2 + y2) * sinA2;\n return m;\n }\n\n function Scale(x, y, z) {\n var m = new CSSMatrix();\n m.m11 = x;\n m.a = x;\n m.m22 = y;\n m.d = y;\n m.m33 = z;\n return m;\n }\n\n function SkewX(angle) {\n var m = new CSSMatrix();\n var radA = angle * Math.PI / 180;\n var t = Math.tan(radA);\n m.m21 = t;\n m.c = t;\n return m;\n }\n\n function SkewY(angle) {\n var m = new CSSMatrix();\n var radA = angle * Math.PI / 180;\n var t = Math.tan(radA);\n m.m12 = t;\n m.b = t;\n return m;\n }\n\n function Multiply(m1, m2) {\n var m11 = m2.m11 * m1.m11 + m2.m12 * m1.m21 + m2.m13 * m1.m31 + m2.m14 * m1.m41;\n var m12 = m2.m11 * m1.m12 + m2.m12 * m1.m22 + m2.m13 * m1.m32 + m2.m14 * m1.m42;\n var m13 = m2.m11 * m1.m13 + m2.m12 * m1.m23 + m2.m13 * m1.m33 + m2.m14 * m1.m43;\n var m14 = m2.m11 * m1.m14 + m2.m12 * m1.m24 + m2.m13 * m1.m34 + m2.m14 * m1.m44;\n var m21 = m2.m21 * m1.m11 + m2.m22 * m1.m21 + m2.m23 * m1.m31 + m2.m24 * m1.m41;\n var m22 = m2.m21 * m1.m12 + m2.m22 * m1.m22 + m2.m23 * m1.m32 + m2.m24 * m1.m42;\n var m23 = m2.m21 * m1.m13 + m2.m22 * m1.m23 + m2.m23 * m1.m33 + m2.m24 * m1.m43;\n var m24 = m2.m21 * m1.m14 + m2.m22 * m1.m24 + m2.m23 * m1.m34 + m2.m24 * m1.m44;\n var m31 = m2.m31 * m1.m11 + m2.m32 * m1.m21 + m2.m33 * m1.m31 + m2.m34 * m1.m41;\n var m32 = m2.m31 * m1.m12 + m2.m32 * m1.m22 + m2.m33 * m1.m32 + m2.m34 * m1.m42;\n var m33 = m2.m31 * m1.m13 + m2.m32 * m1.m23 + m2.m33 * m1.m33 + m2.m34 * m1.m43;\n var m34 = m2.m31 * m1.m14 + m2.m32 * m1.m24 + m2.m33 * m1.m34 + m2.m34 * m1.m44;\n var m41 = m2.m41 * m1.m11 + m2.m42 * m1.m21 + m2.m43 * m1.m31 + m2.m44 * m1.m41;\n var m42 = m2.m41 * m1.m12 + m2.m42 * m1.m22 + m2.m43 * m1.m32 + m2.m44 * m1.m42;\n var m43 = m2.m41 * m1.m13 + m2.m42 * m1.m23 + m2.m43 * m1.m33 + m2.m44 * m1.m43;\n var m44 = m2.m41 * m1.m14 + m2.m42 * m1.m24 + m2.m43 * m1.m34 + m2.m44 * m1.m44;\n return fromArray([m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44]);\n }\n\n var CSSMatrix = function CSSMatrix() {\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n var m = this;\n m.a = 1;\n m.b = 0;\n m.c = 0;\n m.d = 1;\n m.e = 0;\n m.f = 0;\n m.m11 = 1;\n m.m12 = 0;\n m.m13 = 0;\n m.m14 = 0;\n m.m21 = 0;\n m.m22 = 1;\n m.m23 = 0;\n m.m24 = 0;\n m.m31 = 0;\n m.m32 = 0;\n m.m33 = 1;\n m.m34 = 0;\n m.m41 = 0;\n m.m42 = 0;\n m.m43 = 0;\n m.m44 = 1;\n\n if (args && args.length) {\n var ARGS = [16, 6].some(function (l) {\n return l === args.length;\n }) ? args : args[0];\n return m.setMatrixValue(ARGS);\n }\n\n return m;\n };\n\n var prototypeAccessors = {\n isIdentity: {\n configurable: true\n },\n is2D: {\n configurable: true\n }\n };\n\n prototypeAccessors.isIdentity.set = function (value) {\n this.isIdentity = value;\n };\n\n prototypeAccessors.isIdentity.get = function () {\n var m = this;\n return m.m11 === 1 && m.m12 === 0 && m.m13 === 0 && m.m14 === 0 && m.m21 === 0 && m.m22 === 1 && m.m23 === 0 && m.m24 === 0 && m.m31 === 0 && m.m32 === 0 && m.m33 === 1 && m.m34 === 0 && m.m41 === 0 && m.m42 === 0 && m.m43 === 0 && m.m44 === 1;\n };\n\n prototypeAccessors.is2D.get = function () {\n var m = this;\n return m.m31 === 0 && m.m32 === 0 && m.m33 === 1 && m.m34 === 0 && m.m43 === 0 && m.m44 === 1;\n };\n\n prototypeAccessors.is2D.set = function (value) {\n this.is2D = value;\n };\n\n CSSMatrix.prototype.setMatrixValue = function setMatrixValue(source) {\n var m = this;\n\n if ([Array, Float64Array, Float32Array].some(function (a) {\n return source instanceof a;\n })) {\n return fromArray(source);\n }\n\n if (typeof source === 'string' && source.length && source !== 'none') {\n return fromString(source);\n }\n\n if (_typeof(source) === 'object') {\n return fromMatrix(source);\n }\n\n return m;\n };\n\n CSSMatrix.prototype.toArray = function toArray() {\n var m = this;\n var pow = Math.pow(10, 6);\n var result;\n\n if (m.is2D) {\n result = [m.a, m.b, m.c, m.d, m.e, m.f];\n } else {\n result = [m.m11, m.m12, m.m13, m.m14, m.m21, m.m22, m.m23, m.m24, m.m31, m.m32, m.m33, m.m34, m.m41, m.m42, m.m43, m.m44];\n }\n\n return result.map(function (n) {\n return Math.abs(n) < 1e-6 ? 0 : (n * pow >> 0) / pow;\n });\n };\n\n CSSMatrix.prototype.toString = function toString() {\n var m = this;\n var values = m.toArray();\n var type = m.is2D ? 'matrix' : 'matrix3d';\n return type + \"(\" + values + \")\";\n };\n\n CSSMatrix.prototype.toJSON = function toJSON() {\n var m = this;\n var is2D = m.is2D;\n var isIdentity = m.isIdentity;\n return Object.assign({}, m, {\n is2D: is2D,\n isIdentity: isIdentity\n });\n };\n\n CSSMatrix.prototype.multiply = function multiply(m2) {\n return Multiply(this, m2);\n };\n\n CSSMatrix.prototype.translate = function translate(x, y, z) {\n var X = x;\n var Y = y;\n var Z = z;\n\n if (Z === undefined) {\n Z = 0;\n }\n\n if (Y === undefined) {\n Y = 0;\n }\n\n return Multiply(this, Translate(X, Y, Z));\n };\n\n CSSMatrix.prototype.scale = function scale(x, y, z) {\n var X = x;\n var Y = y;\n var Z = z;\n\n if (Y === undefined) {\n Y = x;\n }\n\n if (Z === undefined) {\n Z = 1;\n }\n\n return Multiply(this, Scale(X, Y, Z));\n };\n\n CSSMatrix.prototype.rotate = function rotate(rx, ry, rz) {\n var RX = rx;\n var RY = ry;\n var RZ = rz;\n\n if (RY === undefined) {\n RY = 0;\n }\n\n if (RZ === undefined) {\n RZ = RX;\n RX = 0;\n }\n\n return Multiply(this, Rotate(RX, RY, RZ));\n };\n\n CSSMatrix.prototype.rotateAxisAngle = function rotateAxisAngle(x, y, z, angle) {\n if ([x, y, z, angle].some(function (n) {\n return Number.isNaN(n);\n })) {\n throw new TypeError('CSSMatrix: expecting 4 values');\n }\n\n return Multiply(this, RotateAxisAngle(x, y, z, angle));\n };\n\n CSSMatrix.prototype.skewX = function skewX(angle) {\n return Multiply(this, SkewX(angle));\n };\n\n CSSMatrix.prototype.skewY = function skewY(angle) {\n return Multiply(this, SkewY(angle));\n };\n\n CSSMatrix.prototype.transformPoint = function transformPoint(v) {\n var M = this;\n var m = Translate(v.x, v.y, v.z);\n m.m44 = v.w || 1;\n m = M.multiply(m);\n return {\n x: m.m41,\n y: m.m42,\n z: m.m43,\n w: m.m44\n };\n };\n\n CSSMatrix.prototype.transform = function transform(t) {\n var m = this;\n var x = m.m11 * t.x + m.m12 * t.y + m.m13 * t.z + m.m14 * t.w;\n var y = m.m21 * t.x + m.m22 * t.y + m.m23 * t.z + m.m24 * t.w;\n var z = m.m31 * t.x + m.m32 * t.y + m.m33 * t.z + m.m34 * t.w;\n var w = m.m41 * t.x + m.m42 * t.y + m.m43 * t.z + m.m44 * t.w;\n return {\n x: x / w,\n y: y / w,\n z: z / w,\n w: w\n };\n };\n\n Object.defineProperties(CSSMatrix.prototype, prototypeAccessors);\n Object.assign(CSSMatrix, {\n Translate: Translate,\n Rotate: Rotate,\n RotateAxisAngle: RotateAxisAngle,\n Scale: Scale,\n SkewX: SkewX,\n SkewY: SkewY,\n Multiply: Multiply,\n fromArray: fromArray,\n fromMatrix: fromMatrix,\n fromString: fromString\n });\n var version = \"0.0.24\";\n var Version = version;\n Object.assign(CSSMatrix, {\n Version: Version\n });\n return CSSMatrix;\n});\n\n/***/ }),\n/* 70 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n__w_pdfjs_require__(71);\n__w_pdfjs_require__(86);\nvar path = __w_pdfjs_require__(96);\nmodule.exports = path.Object.fromEntries;\n\n/***/ }),\n/* 71 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar addToUnscopables = __w_pdfjs_require__(72);\nvar Iterators = __w_pdfjs_require__(77);\nvar InternalStateModule = __w_pdfjs_require__(52);\nvar defineIterator = __w_pdfjs_require__(78);\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated),\n index: 0,\n kind: kind\n });\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return {\n value: undefined,\n done: true\n };\n }\n if (kind == 'keys')\n return {\n value: index,\n done: false\n };\n if (kind == 'values')\n return {\n value: target[index],\n done: false\n };\n return {\n value: [\n index,\n target[index]\n ],\n done: false\n };\n}, 'values');\nIterators.Arguments = Iterators.Array;\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n/***/ }),\n/* 72 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar wellKnownSymbol = __w_pdfjs_require__(37);\nvar create = __w_pdfjs_require__(73);\nvar definePropertyModule = __w_pdfjs_require__(48);\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\n/***/ }),\n/* 73 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar anObject = __w_pdfjs_require__(49);\nvar defineProperties = __w_pdfjs_require__(74);\nvar enumBugKeys = __w_pdfjs_require__(66);\nvar hiddenKeys = __w_pdfjs_require__(55);\nvar html = __w_pdfjs_require__(76);\nvar documentCreateElement = __w_pdfjs_require__(46);\nvar sharedKey = __w_pdfjs_require__(54);\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar EmptyConstructor = function () {\n};\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null;\n return temp;\n};\nvar NullProtoObjectViaIFrame = function () {\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) {\n }\n NullProtoObject = typeof document != 'undefined' ? document.domain && activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame() : NullProtoObjectViaActiveX(activeXDocument);\n var length = enumBugKeys.length;\n while (length--)\n delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\nhiddenKeys[IE_PROTO] = true;\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n result[IE_PROTO] = O;\n } else\n result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\n/***/ }),\n/* 74 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar DESCRIPTORS = __w_pdfjs_require__(12);\nvar definePropertyModule = __w_pdfjs_require__(48);\nvar anObject = __w_pdfjs_require__(49);\nvar toIndexedObject = __w_pdfjs_require__(17);\nvar objectKeys = __w_pdfjs_require__(75);\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index)\n definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n\n/***/ }),\n/* 75 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar internalObjectKeys = __w_pdfjs_require__(60);\nvar enumBugKeys = __w_pdfjs_require__(66);\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n/***/ }),\n/* 76 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar getBuiltIn = __w_pdfjs_require__(27);\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n/***/ }),\n/* 77 */\n/***/ ((module) => {\n\nmodule.exports = {};\n\n/***/ }),\n/* 78 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(9);\nvar call = __w_pdfjs_require__(14);\nvar IS_PURE = __w_pdfjs_require__(39);\nvar FunctionName = __w_pdfjs_require__(56);\nvar isCallable = __w_pdfjs_require__(25);\nvar createIteratorConstructor = __w_pdfjs_require__(79);\nvar getPrototypeOf = __w_pdfjs_require__(81);\nvar setPrototypeOf = __w_pdfjs_require__(84);\nvar setToStringTag = __w_pdfjs_require__(83);\nvar createNonEnumerableProperty = __w_pdfjs_require__(47);\nvar redefine = __w_pdfjs_require__(50);\nvar wellKnownSymbol = __w_pdfjs_require__(37);\nvar Iterators = __w_pdfjs_require__(77);\nvar IteratorsCore = __w_pdfjs_require__(80);\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\nvar returnThis = function () {\n return this;\n};\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator)\n return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype)\n return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS:\n return function keys() {\n return new IteratorConstructor(this, KIND);\n };\n case VALUES:\n return function values() {\n return new IteratorConstructor(this, KIND);\n };\n case ENTRIES:\n return function entries() {\n return new IteratorConstructor(this, KIND);\n };\n }\n return function () {\n return new IteratorConstructor(this);\n };\n };\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype['@@iterator'] || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n redefine(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE)\n Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() {\n return call(nativeIterator, this);\n };\n }\n }\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED)\n for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n }\n else\n $({\n target: NAME,\n proto: true,\n forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME\n }, methods);\n }\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n return methods;\n};\n\n/***/ }),\n/* 79 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\nvar IteratorPrototype = (__w_pdfjs_require__(80).IteratorPrototype);\nvar create = __w_pdfjs_require__(73);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nvar setToStringTag = __w_pdfjs_require__(83);\nvar Iterators = __w_pdfjs_require__(77);\nvar returnThis = function () {\n return this;\n};\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n/***/ }),\n/* 80 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\nvar fails = __w_pdfjs_require__(13);\nvar isCallable = __w_pdfjs_require__(25);\nvar create = __w_pdfjs_require__(73);\nvar getPrototypeOf = __w_pdfjs_require__(81);\nvar redefine = __w_pdfjs_require__(50);\nvar wellKnownSymbol = __w_pdfjs_require__(37);\nvar IS_PURE = __w_pdfjs_require__(39);\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\nif ([].keys) {\n arrayIterator = [].keys();\n if (!('next' in arrayIterator))\n BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype)\n IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\nif (NEW_ITERATOR_PROTOTYPE)\n IteratorPrototype = {};\nelse if (IS_PURE)\n IteratorPrototype = create(IteratorPrototype);\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n redefine(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n/***/ }),\n/* 81 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar hasOwn = __w_pdfjs_require__(42);\nvar isCallable = __w_pdfjs_require__(25);\nvar toObject = __w_pdfjs_require__(43);\nvar sharedKey = __w_pdfjs_require__(54);\nvar CORRECT_PROTOTYPE_GETTER = __w_pdfjs_require__(82);\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar Object = global.Object;\nvar ObjectPrototype = Object.prototype;\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO))\n return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n }\n return object instanceof Object ? ObjectPrototype : null;\n};\n\n/***/ }),\n/* 82 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar fails = __w_pdfjs_require__(13);\nmodule.exports = !fails(function () {\n function F() {\n }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n/***/ }),\n/* 83 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar defineProperty = (__w_pdfjs_require__(48).f);\nvar hasOwn = __w_pdfjs_require__(42);\nvar wellKnownSymbol = __w_pdfjs_require__(37);\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !hasOwn(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, {\n configurable: true,\n value: TAG\n });\n }\n};\n\n/***/ }),\n/* 84 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar uncurryThis = __w_pdfjs_require__(19);\nvar anObject = __w_pdfjs_require__(49);\nvar aPossiblePrototype = __w_pdfjs_require__(85);\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? (function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) {\n }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER)\n setter(O, proto);\n else\n O.__proto__ = proto;\n return O;\n };\n}()) : undefined);\n\n/***/ }),\n/* 85 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar isCallable = __w_pdfjs_require__(25);\nvar String = global.String;\nvar TypeError = global.TypeError;\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument))\n return argument;\n throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n\n/***/ }),\n/* 86 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar $ = __w_pdfjs_require__(9);\nvar iterate = __w_pdfjs_require__(87);\nvar createProperty = __w_pdfjs_require__(95);\n$({\n target: 'Object',\n stat: true\n}, {\n fromEntries: function fromEntries(iterable) {\n var obj = {};\n iterate(iterable, function (k, v) {\n createProperty(obj, k, v);\n }, { AS_ENTRIES: true });\n return obj;\n }\n});\n\n/***/ }),\n/* 87 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar bind = __w_pdfjs_require__(88);\nvar call = __w_pdfjs_require__(14);\nvar anObject = __w_pdfjs_require__(49);\nvar tryToString = __w_pdfjs_require__(35);\nvar isArrayIteratorMethod = __w_pdfjs_require__(89);\nvar lengthOfArrayLike = __w_pdfjs_require__(64);\nvar isPrototypeOf = __w_pdfjs_require__(28);\nvar getIterator = __w_pdfjs_require__(90);\nvar getIteratorMethod = __w_pdfjs_require__(91);\nvar iteratorClose = __w_pdfjs_require__(94);\nvar TypeError = global.TypeError;\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\nvar ResultPrototype = Result.prototype;\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n var stop = function (condition) {\n if (iterator)\n iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n }\n return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn)\n throw TypeError(tryToString(iterable) + ' is not iterable');\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result))\n return result;\n }\n return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result))\n return result;\n }\n return new Result(false);\n};\n\n/***/ }),\n/* 88 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar uncurryThis = __w_pdfjs_require__(19);\nvar aCallable = __w_pdfjs_require__(34);\nvar bind = uncurryThis(uncurryThis.bind);\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : bind ? bind(fn, that) : function () {\n return fn.apply(that, arguments);\n };\n};\n\n/***/ }),\n/* 89 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar wellKnownSymbol = __w_pdfjs_require__(37);\nvar Iterators = __w_pdfjs_require__(77);\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n/***/ }),\n/* 90 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar call = __w_pdfjs_require__(14);\nvar aCallable = __w_pdfjs_require__(34);\nvar anObject = __w_pdfjs_require__(49);\nvar tryToString = __w_pdfjs_require__(35);\nvar getIteratorMethod = __w_pdfjs_require__(91);\nvar TypeError = global.TypeError;\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod))\n return anObject(call(iteratorMethod, argument));\n throw TypeError(tryToString(argument) + ' is not iterable');\n};\n\n/***/ }),\n/* 91 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar classof = __w_pdfjs_require__(92);\nvar getMethod = __w_pdfjs_require__(33);\nvar Iterators = __w_pdfjs_require__(77);\nvar wellKnownSymbol = __w_pdfjs_require__(37);\nvar ITERATOR = wellKnownSymbol('iterator');\nmodule.exports = function (it) {\n if (it != undefined)\n return getMethod(it, ITERATOR) || getMethod(it, '@@iterator') || Iterators[classof(it)];\n};\n\n/***/ }),\n/* 92 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(93);\nvar isCallable = __w_pdfjs_require__(25);\nvar classofRaw = __w_pdfjs_require__(20);\nvar wellKnownSymbol = __w_pdfjs_require__(37);\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\nvar CORRECT_ARGUMENTS = classofRaw((function () {\n return arguments;\n}())) == 'Arguments';\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) {\n }\n};\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n\n/***/ }),\n/* 93 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar wellKnownSymbol = __w_pdfjs_require__(37);\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\ntest[TO_STRING_TAG] = 'z';\nmodule.exports = String(test) === '[object z]';\n\n/***/ }),\n/* 94 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar call = __w_pdfjs_require__(14);\nvar anObject = __w_pdfjs_require__(49);\nvar getMethod = __w_pdfjs_require__(33);\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw')\n throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw')\n throw value;\n if (innerError)\n throw innerResult;\n anObject(innerResult);\n return value;\n};\n\n/***/ }),\n/* 95 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\nvar toPropertyKey = __w_pdfjs_require__(22);\nvar definePropertyModule = __w_pdfjs_require__(48);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object)\n definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else\n object[propertyKey] = value;\n};\n\n/***/ }),\n/* 96 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nmodule.exports = global;\n\n/***/ }),\n/* 97 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n__w_pdfjs_require__(98);\n__w_pdfjs_require__(71);\n__w_pdfjs_require__(105);\n__w_pdfjs_require__(107);\n__w_pdfjs_require__(129);\n__w_pdfjs_require__(130);\n__w_pdfjs_require__(131);\n__w_pdfjs_require__(132);\nvar path = __w_pdfjs_require__(96);\nmodule.exports = path.Promise;\n\n/***/ }),\n/* 98 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(9);\nvar global = __w_pdfjs_require__(10);\nvar isPrototypeOf = __w_pdfjs_require__(28);\nvar getPrototypeOf = __w_pdfjs_require__(81);\nvar setPrototypeOf = __w_pdfjs_require__(84);\nvar copyConstructorProperties = __w_pdfjs_require__(57);\nvar create = __w_pdfjs_require__(73);\nvar createNonEnumerableProperty = __w_pdfjs_require__(47);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nvar clearErrorStack = __w_pdfjs_require__(99);\nvar installErrorCause = __w_pdfjs_require__(101);\nvar iterate = __w_pdfjs_require__(87);\nvar normalizeStringArgument = __w_pdfjs_require__(102);\nvar wellKnownSymbol = __w_pdfjs_require__(37);\nvar ERROR_STACK_INSTALLABLE = __w_pdfjs_require__(104);\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Error = global.Error;\nvar push = [].push;\nvar $AggregateError = function AggregateError(errors, message) {\n var options = arguments.length > 2 ? arguments[2] : undefined;\n var isInstance = isPrototypeOf(AggregateErrorPrototype, this);\n var that;\n if (setPrototypeOf) {\n that = setPrototypeOf(new Error(undefined), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype);\n } else {\n that = isInstance ? this : create(AggregateErrorPrototype);\n createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');\n }\n createNonEnumerableProperty(that, 'message', normalizeStringArgument(message, ''));\n if (ERROR_STACK_INSTALLABLE)\n createNonEnumerableProperty(that, 'stack', clearErrorStack(that.stack, 1));\n installErrorCause(that, options);\n var errorsArray = [];\n iterate(errors, push, { that: errorsArray });\n createNonEnumerableProperty(that, 'errors', errorsArray);\n return that;\n};\nif (setPrototypeOf)\n setPrototypeOf($AggregateError, Error);\nelse\n copyConstructorProperties($AggregateError, Error);\nvar AggregateErrorPrototype = $AggregateError.prototype = create(Error.prototype, {\n constructor: createPropertyDescriptor(1, $AggregateError),\n message: createPropertyDescriptor(1, ''),\n name: createPropertyDescriptor(1, 'AggregateError')\n});\n$({ global: true }, { AggregateError: $AggregateError });\n\n/***/ }),\n/* 99 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar uncurryThis = __w_pdfjs_require__(19);\nvar arraySlice = __w_pdfjs_require__(100);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar join = uncurryThis([].join);\nvar TEST = function (arg) {\n return String(Error(arg).stack);\n}('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\nvar IS_FIREFOX_OR_SAFARI_STACK = /@[^\\n]*\\n/.test(TEST) && !/zxcasd/.test(TEST);\nmodule.exports = function (stack, dropEntries) {\n if (typeof stack != 'string')\n return stack;\n if (IS_V8_OR_CHAKRA_STACK) {\n while (dropEntries--)\n stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } else if (IS_FIREFOX_OR_SAFARI_STACK) {\n return join(arraySlice(split(stack, '\\n'), dropEntries), '\\n');\n }\n return stack;\n};\n\n/***/ }),\n/* 100 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar toAbsoluteIndex = __w_pdfjs_require__(62);\nvar lengthOfArrayLike = __w_pdfjs_require__(64);\nvar createProperty = __w_pdfjs_require__(95);\nvar Array = global.Array;\nvar max = Math.max;\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++)\n createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n\n/***/ }),\n/* 101 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar isObject = __w_pdfjs_require__(24);\nvar createNonEnumerableProperty = __w_pdfjs_require__(47);\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n\n/***/ }),\n/* 102 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar toString = __w_pdfjs_require__(103);\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n\n/***/ }),\n/* 103 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar classof = __w_pdfjs_require__(92);\nvar String = global.String;\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol')\n throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n\n/***/ }),\n/* 104 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar fails = __w_pdfjs_require__(13);\nvar createPropertyDescriptor = __w_pdfjs_require__(16);\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error))\n return true;\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n\n/***/ }),\n/* 105 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(93);\nvar redefine = __w_pdfjs_require__(50);\nvar toString = __w_pdfjs_require__(106);\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n\n/***/ }),\n/* 106 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\nvar TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(93);\nvar classof = __w_pdfjs_require__(92);\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n\n/***/ }),\n/* 107 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(9);\nvar IS_PURE = __w_pdfjs_require__(39);\nvar global = __w_pdfjs_require__(10);\nvar getBuiltIn = __w_pdfjs_require__(27);\nvar call = __w_pdfjs_require__(14);\nvar NativePromise = __w_pdfjs_require__(108);\nvar redefine = __w_pdfjs_require__(50);\nvar redefineAll = __w_pdfjs_require__(109);\nvar setPrototypeOf = __w_pdfjs_require__(84);\nvar setToStringTag = __w_pdfjs_require__(83);\nvar setSpecies = __w_pdfjs_require__(110);\nvar aCallable = __w_pdfjs_require__(34);\nvar isCallable = __w_pdfjs_require__(25);\nvar isObject = __w_pdfjs_require__(24);\nvar anInstance = __w_pdfjs_require__(111);\nvar inspectSource = __w_pdfjs_require__(51);\nvar iterate = __w_pdfjs_require__(87);\nvar checkCorrectnessOfIteration = __w_pdfjs_require__(112);\nvar speciesConstructor = __w_pdfjs_require__(113);\nvar task = (__w_pdfjs_require__(116).set);\nvar microtask = __w_pdfjs_require__(121);\nvar promiseResolve = __w_pdfjs_require__(124);\nvar hostReportErrors = __w_pdfjs_require__(126);\nvar newPromiseCapabilityModule = __w_pdfjs_require__(125);\nvar perform = __w_pdfjs_require__(127);\nvar InternalStateModule = __w_pdfjs_require__(52);\nvar isForced = __w_pdfjs_require__(68);\nvar wellKnownSymbol = __w_pdfjs_require__(37);\nvar IS_BROWSER = __w_pdfjs_require__(128);\nvar IS_NODE = __w_pdfjs_require__(120);\nvar V8_VERSION = __w_pdfjs_require__(31);\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\nvar FORCED = isForced(PROMISE, function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66)\n return true;\n if (IS_PURE && !PromisePrototype['finally'])\n return true;\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE))\n return false;\n var promise = new PromiseConstructor(function (resolve) {\n resolve(1);\n });\n var FakePromise = function (exec) {\n exec(function () {\n }, function () {\n });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () {\n }) instanceof FakePromise;\n if (!SUBCLASSING)\n return true;\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () {\n });\n});\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\nvar notify = function (state, isReject) {\n if (state.notified)\n return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED)\n onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true)\n result = value;\n else {\n if (domain)\n domain.enter();\n result = handler(value);\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else\n resolve(result);\n } else\n reject(value);\n } catch (error) {\n if (domain && !exited)\n domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection)\n onUnhandled(state);\n });\n};\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else\n event = {\n promise: promise,\n reason: reason\n };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name]))\n handler(event);\n else if (name === UNHANDLED_REJECTION)\n hostReportErrors('Unhandled promise rejection', reason);\n};\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else\n dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error)\n throw result.value;\n }\n });\n};\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else\n dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\nvar internalReject = function (state, value, unwrap) {\n if (state.done)\n return;\n state.done = true;\n if (unwrap)\n state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\nvar internalResolve = function (state, value, unwrap) {\n if (state.done)\n return;\n state.done = true;\n if (unwrap)\n state = unwrap;\n try {\n if (state.facade === value)\n throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value, bind(internalResolve, wrapper, state), bind(internalReject, wrapper, state));\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\nif (FORCED) {\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n PromisePrototype = PromiseConstructor.prototype;\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromisePrototype, {\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reactions = state.reactions;\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n reactions[reactions.length] = reaction;\n if (state.state != PENDING)\n notify(state, false);\n return reaction.promise;\n },\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C);\n };\n if (!IS_PURE && isCallable(NativePromise) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n if (!SUBCLASSING) {\n redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n }, { unsafe: true });\n redefine(NativePromisePrototype, 'catch', PromisePrototype['catch'], { unsafe: true });\n }\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) {\n }\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n$({\n global: true,\n wrap: true,\n forced: FORCED\n}, { Promise: PromiseConstructor });\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\nPromiseWrapper = getBuiltIn(PROMISE);\n$({\n target: PROMISE,\n stat: true,\n forced: FORCED\n}, {\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n$({\n target: PROMISE,\n stat: true,\n forced: IS_PURE || FORCED\n}, {\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n$({\n target: PROMISE,\n stat: true,\n forced: INCORRECT_ITERATION\n}, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled)\n return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error)\n reject(result.value);\n return capability.promise;\n },\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error)\n reject(result.value);\n return capability.promise;\n }\n});\n\n/***/ }),\n/* 108 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nmodule.exports = global.Promise;\n\n/***/ }),\n/* 109 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar redefine = __w_pdfjs_require__(50);\nmodule.exports = function (target, src, options) {\n for (var key in src)\n redefine(target, key, src[key], options);\n return target;\n};\n\n/***/ }),\n/* 110 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\nvar getBuiltIn = __w_pdfjs_require__(27);\nvar definePropertyModule = __w_pdfjs_require__(48);\nvar wellKnownSymbol = __w_pdfjs_require__(37);\nvar DESCRIPTORS = __w_pdfjs_require__(12);\nvar SPECIES = wellKnownSymbol('species');\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () {\n return this;\n }\n });\n }\n};\n\n/***/ }),\n/* 111 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar isPrototypeOf = __w_pdfjs_require__(28);\nvar TypeError = global.TypeError;\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it))\n return it;\n throw TypeError('Incorrect invocation');\n};\n\n/***/ }),\n/* 112 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar wellKnownSymbol = __w_pdfjs_require__(37);\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n Array.from(iteratorWithReturn, function () {\n throw 2;\n });\n} catch (error) {\n}\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING)\n return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) {\n }\n return ITERATION_SUPPORT;\n};\n\n/***/ }),\n/* 113 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar anObject = __w_pdfjs_require__(49);\nvar aConstructor = __w_pdfjs_require__(114);\nvar wellKnownSymbol = __w_pdfjs_require__(37);\nvar SPECIES = wellKnownSymbol('species');\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n\n/***/ }),\n/* 114 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar isConstructor = __w_pdfjs_require__(115);\nvar tryToString = __w_pdfjs_require__(35);\nvar TypeError = global.TypeError;\nmodule.exports = function (argument) {\n if (isConstructor(argument))\n return argument;\n throw TypeError(tryToString(argument) + ' is not a constructor');\n};\n\n/***/ }),\n/* 115 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar uncurryThis = __w_pdfjs_require__(19);\nvar fails = __w_pdfjs_require__(13);\nvar isCallable = __w_pdfjs_require__(25);\nvar classof = __w_pdfjs_require__(92);\nvar getBuiltIn = __w_pdfjs_require__(27);\nvar inspectSource = __w_pdfjs_require__(51);\nvar noop = function () {\n};\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\nvar isConstructorModern = function (argument) {\n if (!isCallable(argument))\n return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\nvar isConstructorLegacy = function (argument) {\n if (!isCallable(argument))\n return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction':\n return false;\n }\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n};\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call) || !isConstructorModern(Object) || !isConstructorModern(function () {\n called = true;\n }) || called;\n}) ? isConstructorLegacy : isConstructorModern;\n\n/***/ }),\n/* 116 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar apply = __w_pdfjs_require__(117);\nvar bind = __w_pdfjs_require__(88);\nvar isCallable = __w_pdfjs_require__(25);\nvar hasOwn = __w_pdfjs_require__(42);\nvar fails = __w_pdfjs_require__(13);\nvar html = __w_pdfjs_require__(76);\nvar arraySlice = __w_pdfjs_require__(118);\nvar createElement = __w_pdfjs_require__(46);\nvar IS_IOS = __w_pdfjs_require__(119);\nvar IS_NODE = __w_pdfjs_require__(120);\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\ntry {\n location = global.location;\n} catch (error) {\n}\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\nvar listener = function (event) {\n run(event.data);\n};\nvar post = function (id) {\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(isCallable(fn) ? fn : Function(fn), undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port);\n } else if (global.addEventListener && isCallable(global.postMessage) && !global.importScripts && location && location.protocol !== 'file:' && !fails(post)) {\n defer = post;\n global.addEventListener('message', listener, false);\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\nmodule.exports = {\n set: set,\n clear: clear\n};\n\n/***/ }),\n/* 117 */\n/***/ ((module) => {\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (bind ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n\n/***/ }),\n/* 118 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar uncurryThis = __w_pdfjs_require__(19);\nmodule.exports = uncurryThis([].slice);\n\n/***/ }),\n/* 119 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar userAgent = __w_pdfjs_require__(32);\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n\n/***/ }),\n/* 120 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar classof = __w_pdfjs_require__(20);\nvar global = __w_pdfjs_require__(10);\nmodule.exports = classof(global.process) == 'process';\n\n/***/ }),\n/* 121 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nvar bind = __w_pdfjs_require__(88);\nvar getOwnPropertyDescriptor = (__w_pdfjs_require__(11).f);\nvar macrotask = (__w_pdfjs_require__(116).set);\nvar IS_IOS = __w_pdfjs_require__(119);\nvar IS_IOS_PEBBLE = __w_pdfjs_require__(122);\nvar IS_WEBOS_WEBKIT = __w_pdfjs_require__(123);\nvar IS_NODE = __w_pdfjs_require__(120);\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\nvar flush, head, last, notify, toggle, node, promise, then;\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain))\n parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head)\n notify();\n else\n last = undefined;\n throw error;\n }\n }\n last = undefined;\n if (parent)\n parent.enter();\n };\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n promise = Promise.resolve(undefined);\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n } else {\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n}\nmodule.exports = queueMicrotask || function (fn) {\n var task = {\n fn: fn,\n next: undefined\n };\n if (last)\n last.next = task;\n if (!head) {\n head = task;\n notify();\n }\n last = task;\n};\n\n/***/ }),\n/* 122 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar userAgent = __w_pdfjs_require__(32);\nvar global = __w_pdfjs_require__(10);\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n\n/***/ }),\n/* 123 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar userAgent = __w_pdfjs_require__(32);\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n\n/***/ }),\n/* 124 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar anObject = __w_pdfjs_require__(49);\nvar isObject = __w_pdfjs_require__(24);\nvar newPromiseCapability = __w_pdfjs_require__(125);\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C)\n return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\n/***/ }),\n/* 125 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\nvar aCallable = __w_pdfjs_require__(34);\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined)\n throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n/***/ }),\n/* 126 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar global = __w_pdfjs_require__(10);\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n }\n};\n\n/***/ }),\n/* 127 */\n/***/ ((module) => {\n\nmodule.exports = function (exec) {\n try {\n return {\n error: false,\n value: exec()\n };\n } catch (error) {\n return {\n error: true,\n value: error\n };\n }\n};\n\n/***/ }),\n/* 128 */\n/***/ ((module) => {\n\nmodule.exports = typeof window == 'object';\n\n/***/ }),\n/* 129 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(9);\nvar call = __w_pdfjs_require__(14);\nvar aCallable = __w_pdfjs_require__(34);\nvar newPromiseCapabilityModule = __w_pdfjs_require__(125);\nvar perform = __w_pdfjs_require__(127);\nvar iterate = __w_pdfjs_require__(87);\n$({\n target: 'Promise',\n stat: true\n}, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled)\n return;\n alreadyCalled = true;\n values[index] = {\n status: 'fulfilled',\n value: value\n };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled)\n return;\n alreadyCalled = true;\n values[index] = {\n status: 'rejected',\n reason: error\n };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error)\n reject(result.value);\n return capability.promise;\n }\n});\n\n/***/ }),\n/* 130 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(9);\nvar aCallable = __w_pdfjs_require__(34);\nvar getBuiltIn = __w_pdfjs_require__(27);\nvar call = __w_pdfjs_require__(14);\nvar newPromiseCapabilityModule = __w_pdfjs_require__(125);\nvar perform = __w_pdfjs_require__(127);\nvar iterate = __w_pdfjs_require__(87);\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n$({\n target: 'Promise',\n stat: true\n}, {\n any: function any(iterable) {\n var C = this;\n var AggregateError = getBuiltIn('AggregateError');\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var errors = [];\n var counter = 0;\n var remaining = 1;\n var alreadyResolved = false;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyRejected = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyRejected || alreadyResolved)\n return;\n alreadyResolved = true;\n resolve(value);\n }, function (error) {\n if (alreadyRejected || alreadyResolved)\n return;\n alreadyRejected = true;\n errors[index] = error;\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n });\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n if (result.error)\n reject(result.value);\n return capability.promise;\n }\n});\n\n/***/ }),\n/* 131 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\nvar $ = __w_pdfjs_require__(9);\nvar IS_PURE = __w_pdfjs_require__(39);\nvar NativePromise = __w_pdfjs_require__(108);\nvar fails = __w_pdfjs_require__(13);\nvar getBuiltIn = __w_pdfjs_require__(27);\nvar isCallable = __w_pdfjs_require__(25);\nvar speciesConstructor = __w_pdfjs_require__(113);\nvar promiseResolve = __w_pdfjs_require__(124);\nvar redefine = __w_pdfjs_require__(50);\nvar NON_GENERIC = !!NativePromise && fails(function () {\n NativePromise.prototype['finally'].call({\n then: function () {\n }\n }, function () {\n });\n});\n$({\n target: 'Promise',\n proto: true,\n real: true,\n forced: NON_GENERIC\n}, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\n return this.then(isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () {\n return x;\n });\n } : onFinally, isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () {\n throw e;\n });\n } : onFinally);\n }\n});\nif (!IS_PURE && isCallable(NativePromise)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromise.prototype['finally'] !== method) {\n redefine(NativePromise.prototype, 'finally', method, { unsafe: true });\n }\n}\n\n/***/ }),\n/* 132 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\nvar charAt = (__w_pdfjs_require__(133).charAt);\nvar toString = __w_pdfjs_require__(103);\nvar InternalStateModule = __w_pdfjs_require__(52);\nvar defineIterator = __w_pdfjs_require__(78);\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length)\n return {\n value: undefined,\n done: true\n };\n point = charAt(string, index);\n state.index += point.length;\n return {\n value: point,\n done: false\n };\n});\n\n/***/ }),\n/* 133 */\n/***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\nvar uncurryThis = __w_pdfjs_require__(19);\nvar toIntegerOrInfinity = __w_pdfjs_require__(63);\nvar toString = __w_pdfjs_require__(103);\nvar requireObjectCoercible = __w_pdfjs_require__(21);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size)\n return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF ? CONVERT_TO_STRING ? charAt(S, position) : first : CONVERT_TO_STRING ? stringSlice(S, position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\nmodule.exports = {\n codeAt: createMethod(false),\n charAt: createMethod(true)\n};\n\n/***/ }),\n/* 134 */\n/***/ (function(__unused_webpack_module, exports) {\n\n(function (global, factory) {\n true ? factory(exports) : 0;\n}(this, function (exports) {\n 'use strict';\n var SymbolPolyfill = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol : function (description) {\n return \"Symbol(\" + description + \")\";\n };\n function noop() {\n return undefined;\n }\n function getGlobals() {\n if (typeof self !== 'undefined') {\n return self;\n } else if (typeof window !== 'undefined') {\n return window;\n } else if (typeof global !== 'undefined') {\n return global;\n }\n return undefined;\n }\n var globals = getGlobals();\n function typeIsObject(x) {\n return typeof x === 'object' && x !== null || typeof x === 'function';\n }\n var rethrowAssertionErrorRejection = noop;\n var originalPromise = Promise;\n var originalPromiseThen = Promise.prototype.then;\n var originalPromiseResolve = Promise.resolve.bind(originalPromise);\n var originalPromiseReject = Promise.reject.bind(originalPromise);\n function newPromise(executor) {\n return new originalPromise(executor);\n }\n function promiseResolvedWith(value) {\n return originalPromiseResolve(value);\n }\n function promiseRejectedWith(reason) {\n return originalPromiseReject(reason);\n }\n function PerformPromiseThen(promise, onFulfilled, onRejected) {\n return originalPromiseThen.call(promise, onFulfilled, onRejected);\n }\n function uponPromise(promise, onFulfilled, onRejected) {\n PerformPromiseThen(PerformPromiseThen(promise, onFulfilled, onRejected), undefined, rethrowAssertionErrorRejection);\n }\n function uponFulfillment(promise, onFulfilled) {\n uponPromise(promise, onFulfilled);\n }\n function uponRejection(promise, onRejected) {\n uponPromise(promise, undefined, onRejected);\n }\n function transformPromiseWith(promise, fulfillmentHandler, rejectionHandler) {\n return PerformPromiseThen(promise, fulfillmentHandler, rejectionHandler);\n }\n function setPromiseIsHandledToTrue(promise) {\n PerformPromiseThen(promise, undefined, rethrowAssertionErrorRejection);\n }\n var queueMicrotask = (function () {\n var globalQueueMicrotask = globals && globals.queueMicrotask;\n if (typeof globalQueueMicrotask === 'function') {\n return globalQueueMicrotask;\n }\n var resolvedPromise = promiseResolvedWith(undefined);\n return function (fn) {\n return PerformPromiseThen(resolvedPromise, fn);\n };\n }());\n function reflectCall(F, V, args) {\n if (typeof F !== 'function') {\n throw new TypeError('Argument is not a function');\n }\n return Function.prototype.apply.call(F, V, args);\n }\n function promiseCall(F, V, args) {\n try {\n return promiseResolvedWith(reflectCall(F, V, args));\n } catch (value) {\n return promiseRejectedWith(value);\n }\n }\n var QUEUE_MAX_ARRAY_SIZE = 16384;\n var SimpleQueue = (function () {\n function SimpleQueue() {\n this._cursor = 0;\n this._size = 0;\n this._front = {\n _elements: [],\n _next: undefined\n };\n this._back = this._front;\n this._cursor = 0;\n this._size = 0;\n }\n Object.defineProperty(SimpleQueue.prototype, \"length\", {\n get: function () {\n return this._size;\n },\n enumerable: false,\n configurable: true\n });\n SimpleQueue.prototype.push = function (element) {\n var oldBack = this._back;\n var newBack = oldBack;\n if (oldBack._elements.length === QUEUE_MAX_ARRAY_SIZE - 1) {\n newBack = {\n _elements: [],\n _next: undefined\n };\n }\n oldBack._elements.push(element);\n if (newBack !== oldBack) {\n this._back = newBack;\n oldBack._next = newBack;\n }\n ++this._size;\n };\n SimpleQueue.prototype.shift = function () {\n var oldFront = this._front;\n var newFront = oldFront;\n var oldCursor = this._cursor;\n var newCursor = oldCursor + 1;\n var elements = oldFront._elements;\n var element = elements[oldCursor];\n if (newCursor === QUEUE_MAX_ARRAY_SIZE) {\n newFront = oldFront._next;\n newCursor = 0;\n }\n --this._size;\n this._cursor = newCursor;\n if (oldFront !== newFront) {\n this._front = newFront;\n }\n elements[oldCursor] = undefined;\n return element;\n };\n SimpleQueue.prototype.forEach = function (callback) {\n var i = this._cursor;\n var node = this._front;\n var elements = node._elements;\n while (i !== elements.length || node._next !== undefined) {\n if (i === elements.length) {\n node = node._next;\n elements = node._elements;\n i = 0;\n if (elements.length === 0) {\n break;\n }\n }\n callback(elements[i]);\n ++i;\n }\n };\n SimpleQueue.prototype.peek = function () {\n var front = this._front;\n var cursor = this._cursor;\n return front._elements[cursor];\n };\n return SimpleQueue;\n }());\n function ReadableStreamReaderGenericInitialize(reader, stream) {\n reader._ownerReadableStream = stream;\n stream._reader = reader;\n if (stream._state === 'readable') {\n defaultReaderClosedPromiseInitialize(reader);\n } else if (stream._state === 'closed') {\n defaultReaderClosedPromiseInitializeAsResolved(reader);\n } else {\n defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n }\n }\n function ReadableStreamReaderGenericCancel(reader, reason) {\n var stream = reader._ownerReadableStream;\n return ReadableStreamCancel(stream, reason);\n }\n function ReadableStreamReaderGenericRelease(reader) {\n if (reader._ownerReadableStream._state === 'readable') {\n defaultReaderClosedPromiseReject(reader, new TypeError(\"Reader was released and can no longer be used to monitor the stream's closedness\"));\n } else {\n defaultReaderClosedPromiseResetToRejected(reader, new TypeError(\"Reader was released and can no longer be used to monitor the stream's closedness\"));\n }\n reader._ownerReadableStream._reader = undefined;\n reader._ownerReadableStream = undefined;\n }\n function readerLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released reader');\n }\n function defaultReaderClosedPromiseInitialize(reader) {\n reader._closedPromise = newPromise(function (resolve, reject) {\n reader._closedPromise_resolve = resolve;\n reader._closedPromise_reject = reject;\n });\n }\n function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {\n defaultReaderClosedPromiseInitialize(reader);\n defaultReaderClosedPromiseReject(reader, reason);\n }\n function defaultReaderClosedPromiseInitializeAsResolved(reader) {\n defaultReaderClosedPromiseInitialize(reader);\n defaultReaderClosedPromiseResolve(reader);\n }\n function defaultReaderClosedPromiseReject(reader, reason) {\n if (reader._closedPromise_reject === undefined) {\n return;\n }\n setPromiseIsHandledToTrue(reader._closedPromise);\n reader._closedPromise_reject(reason);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n }\n function defaultReaderClosedPromiseResetToRejected(reader, reason) {\n defaultReaderClosedPromiseInitializeAsRejected(reader, reason);\n }\n function defaultReaderClosedPromiseResolve(reader) {\n if (reader._closedPromise_resolve === undefined) {\n return;\n }\n reader._closedPromise_resolve(undefined);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n }\n var AbortSteps = SymbolPolyfill('[[AbortSteps]]');\n var ErrorSteps = SymbolPolyfill('[[ErrorSteps]]');\n var CancelSteps = SymbolPolyfill('[[CancelSteps]]');\n var PullSteps = SymbolPolyfill('[[PullSteps]]');\n var NumberIsFinite = Number.isFinite || function (x) {\n return typeof x === 'number' && isFinite(x);\n };\n var MathTrunc = Math.trunc || function (v) {\n return v < 0 ? Math.ceil(v) : Math.floor(v);\n };\n function isDictionary(x) {\n return typeof x === 'object' || typeof x === 'function';\n }\n function assertDictionary(obj, context) {\n if (obj !== undefined && !isDictionary(obj)) {\n throw new TypeError(context + \" is not an object.\");\n }\n }\n function assertFunction(x, context) {\n if (typeof x !== 'function') {\n throw new TypeError(context + \" is not a function.\");\n }\n }\n function isObject(x) {\n return typeof x === 'object' && x !== null || typeof x === 'function';\n }\n function assertObject(x, context) {\n if (!isObject(x)) {\n throw new TypeError(context + \" is not an object.\");\n }\n }\n function assertRequiredArgument(x, position, context) {\n if (x === undefined) {\n throw new TypeError(\"Parameter \" + position + \" is required in '\" + context + \"'.\");\n }\n }\n function assertRequiredField(x, field, context) {\n if (x === undefined) {\n throw new TypeError(field + \" is required in '\" + context + \"'.\");\n }\n }\n function convertUnrestrictedDouble(value) {\n return Number(value);\n }\n function censorNegativeZero(x) {\n return x === 0 ? 0 : x;\n }\n function integerPart(x) {\n return censorNegativeZero(MathTrunc(x));\n }\n function convertUnsignedLongLongWithEnforceRange(value, context) {\n var lowerBound = 0;\n var upperBound = Number.MAX_SAFE_INTEGER;\n var x = Number(value);\n x = censorNegativeZero(x);\n if (!NumberIsFinite(x)) {\n throw new TypeError(context + \" is not a finite number\");\n }\n x = integerPart(x);\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(context + \" is outside the accepted range of \" + lowerBound + \" to \" + upperBound + \", inclusive\");\n }\n if (!NumberIsFinite(x) || x === 0) {\n return 0;\n }\n return x;\n }\n function assertReadableStream(x, context) {\n if (!IsReadableStream(x)) {\n throw new TypeError(context + \" is not a ReadableStream.\");\n }\n }\n function AcquireReadableStreamDefaultReader(stream) {\n return new ReadableStreamDefaultReader(stream);\n }\n function ReadableStreamAddReadRequest(stream, readRequest) {\n stream._reader._readRequests.push(readRequest);\n }\n function ReadableStreamFulfillReadRequest(stream, chunk, done) {\n var reader = stream._reader;\n var readRequest = reader._readRequests.shift();\n if (done) {\n readRequest._closeSteps();\n } else {\n readRequest._chunkSteps(chunk);\n }\n }\n function ReadableStreamGetNumReadRequests(stream) {\n return stream._reader._readRequests.length;\n }\n function ReadableStreamHasDefaultReader(stream) {\n var reader = stream._reader;\n if (reader === undefined) {\n return false;\n }\n if (!IsReadableStreamDefaultReader(reader)) {\n return false;\n }\n return true;\n }\n var ReadableStreamDefaultReader = (function () {\n function ReadableStreamDefaultReader(stream) {\n assertRequiredArgument(stream, 1, 'ReadableStreamDefaultReader');\n assertReadableStream(stream, 'First parameter');\n if (IsReadableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n ReadableStreamReaderGenericInitialize(this, stream);\n this._readRequests = new SimpleQueue();\n }\n Object.defineProperty(ReadableStreamDefaultReader.prototype, \"closed\", {\n get: function () {\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('closed'));\n }\n return this._closedPromise;\n },\n enumerable: false,\n configurable: true\n });\n ReadableStreamDefaultReader.prototype.cancel = function (reason) {\n if (reason === void 0) {\n reason = undefined;\n }\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('cancel'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('cancel'));\n }\n return ReadableStreamReaderGenericCancel(this, reason);\n };\n ReadableStreamDefaultReader.prototype.read = function () {\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('read'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('read from'));\n }\n var resolvePromise;\n var rejectPromise;\n var promise = newPromise(function (resolve, reject) {\n resolvePromise = resolve;\n rejectPromise = reject;\n });\n var readRequest = {\n _chunkSteps: function (chunk) {\n return resolvePromise({\n value: chunk,\n done: false\n });\n },\n _closeSteps: function () {\n return resolvePromise({\n value: undefined,\n done: true\n });\n },\n _errorSteps: function (e) {\n return rejectPromise(e);\n }\n };\n ReadableStreamDefaultReaderRead(this, readRequest);\n return promise;\n };\n ReadableStreamDefaultReader.prototype.releaseLock = function () {\n if (!IsReadableStreamDefaultReader(this)) {\n throw defaultReaderBrandCheckException('releaseLock');\n }\n if (this._ownerReadableStream === undefined) {\n return;\n }\n if (this._readRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n ReadableStreamReaderGenericRelease(this);\n };\n return ReadableStreamDefaultReader;\n }());\n Object.defineProperties(ReadableStreamDefaultReader.prototype, {\n cancel: { enumerable: true },\n read: { enumerable: true },\n releaseLock: { enumerable: true },\n closed: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStreamDefaultReader.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableStreamDefaultReader',\n configurable: true\n });\n }\n function IsReadableStreamDefaultReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n return false;\n }\n return x instanceof ReadableStreamDefaultReader;\n }\n function ReadableStreamDefaultReaderRead(reader, readRequest) {\n var stream = reader._ownerReadableStream;\n stream._disturbed = true;\n if (stream._state === 'closed') {\n readRequest._closeSteps();\n } else if (stream._state === 'errored') {\n readRequest._errorSteps(stream._storedError);\n } else {\n stream._readableStreamController[PullSteps](readRequest);\n }\n }\n function defaultReaderBrandCheckException(name) {\n return new TypeError(\"ReadableStreamDefaultReader.prototype.\" + name + \" can only be used on a ReadableStreamDefaultReader\");\n }\n var _a;\n var AsyncIteratorPrototype;\n if (typeof SymbolPolyfill.asyncIterator === 'symbol') {\n AsyncIteratorPrototype = (_a = {}, _a[SymbolPolyfill.asyncIterator] = function () {\n return this;\n }, _a);\n Object.defineProperty(AsyncIteratorPrototype, SymbolPolyfill.asyncIterator, { enumerable: false });\n }\n var ReadableStreamAsyncIteratorImpl = (function () {\n function ReadableStreamAsyncIteratorImpl(reader, preventCancel) {\n this._ongoingPromise = undefined;\n this._isFinished = false;\n this._reader = reader;\n this._preventCancel = preventCancel;\n }\n ReadableStreamAsyncIteratorImpl.prototype.next = function () {\n var _this = this;\n var nextSteps = function () {\n return _this._nextSteps();\n };\n this._ongoingPromise = this._ongoingPromise ? transformPromiseWith(this._ongoingPromise, nextSteps, nextSteps) : nextSteps();\n return this._ongoingPromise;\n };\n ReadableStreamAsyncIteratorImpl.prototype.return = function (value) {\n var _this = this;\n var returnSteps = function () {\n return _this._returnSteps(value);\n };\n return this._ongoingPromise ? transformPromiseWith(this._ongoingPromise, returnSteps, returnSteps) : returnSteps();\n };\n ReadableStreamAsyncIteratorImpl.prototype._nextSteps = function () {\n var _this = this;\n if (this._isFinished) {\n return Promise.resolve({\n value: undefined,\n done: true\n });\n }\n var reader = this._reader;\n if (reader._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('iterate'));\n }\n var resolvePromise;\n var rejectPromise;\n var promise = newPromise(function (resolve, reject) {\n resolvePromise = resolve;\n rejectPromise = reject;\n });\n var readRequest = {\n _chunkSteps: function (chunk) {\n _this._ongoingPromise = undefined;\n queueMicrotask(function () {\n return resolvePromise({\n value: chunk,\n done: false\n });\n });\n },\n _closeSteps: function () {\n _this._ongoingPromise = undefined;\n _this._isFinished = true;\n ReadableStreamReaderGenericRelease(reader);\n resolvePromise({\n value: undefined,\n done: true\n });\n },\n _errorSteps: function (reason) {\n _this._ongoingPromise = undefined;\n _this._isFinished = true;\n ReadableStreamReaderGenericRelease(reader);\n rejectPromise(reason);\n }\n };\n ReadableStreamDefaultReaderRead(reader, readRequest);\n return promise;\n };\n ReadableStreamAsyncIteratorImpl.prototype._returnSteps = function (value) {\n if (this._isFinished) {\n return Promise.resolve({\n value: value,\n done: true\n });\n }\n this._isFinished = true;\n var reader = this._reader;\n if (reader._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('finish iterating'));\n }\n if (!this._preventCancel) {\n var result = ReadableStreamReaderGenericCancel(reader, value);\n ReadableStreamReaderGenericRelease(reader);\n return transformPromiseWith(result, function () {\n return {\n value: value,\n done: true\n };\n });\n }\n ReadableStreamReaderGenericRelease(reader);\n return promiseResolvedWith({\n value: value,\n done: true\n });\n };\n return ReadableStreamAsyncIteratorImpl;\n }());\n var ReadableStreamAsyncIteratorPrototype = {\n next: function () {\n if (!IsReadableStreamAsyncIterator(this)) {\n return promiseRejectedWith(streamAsyncIteratorBrandCheckException('next'));\n }\n return this._asyncIteratorImpl.next();\n },\n return: function (value) {\n if (!IsReadableStreamAsyncIterator(this)) {\n return promiseRejectedWith(streamAsyncIteratorBrandCheckException('return'));\n }\n return this._asyncIteratorImpl.return(value);\n }\n };\n if (AsyncIteratorPrototype !== undefined) {\n Object.setPrototypeOf(ReadableStreamAsyncIteratorPrototype, AsyncIteratorPrototype);\n }\n function AcquireReadableStreamAsyncIterator(stream, preventCancel) {\n var reader = AcquireReadableStreamDefaultReader(stream);\n var impl = new ReadableStreamAsyncIteratorImpl(reader, preventCancel);\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype);\n iterator._asyncIteratorImpl = impl;\n return iterator;\n }\n function IsReadableStreamAsyncIterator(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_asyncIteratorImpl')) {\n return false;\n }\n try {\n return x._asyncIteratorImpl instanceof ReadableStreamAsyncIteratorImpl;\n } catch (_a) {\n return false;\n }\n }\n function streamAsyncIteratorBrandCheckException(name) {\n return new TypeError(\"ReadableStreamAsyncIterator.\" + name + \" can only be used on a ReadableSteamAsyncIterator\");\n }\n var NumberIsNaN = Number.isNaN || function (x) {\n return x !== x;\n };\n function CreateArrayFromList(elements) {\n return elements.slice();\n }\n function CopyDataBlockBytes(dest, destOffset, src, srcOffset, n) {\n new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n }\n function TransferArrayBuffer(O) {\n return O;\n }\n function IsDetachedBuffer(O) {\n return false;\n }\n function ArrayBufferSlice(buffer, begin, end) {\n if (buffer.slice) {\n return buffer.slice(begin, end);\n }\n var length = end - begin;\n var slice = new ArrayBuffer(length);\n CopyDataBlockBytes(slice, 0, buffer, begin, length);\n return slice;\n }\n function IsNonNegativeNumber(v) {\n if (typeof v !== 'number') {\n return false;\n }\n if (NumberIsNaN(v)) {\n return false;\n }\n if (v < 0) {\n return false;\n }\n return true;\n }\n function CloneAsUint8Array(O) {\n var buffer = ArrayBufferSlice(O.buffer, O.byteOffset, O.byteOffset + O.byteLength);\n return new Uint8Array(buffer);\n }\n function DequeueValue(container) {\n var pair = container._queue.shift();\n container._queueTotalSize -= pair.size;\n if (container._queueTotalSize < 0) {\n container._queueTotalSize = 0;\n }\n return pair.value;\n }\n function EnqueueValueWithSize(container, value, size) {\n if (!IsNonNegativeNumber(size) || size === Infinity) {\n throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n }\n container._queue.push({\n value: value,\n size: size\n });\n container._queueTotalSize += size;\n }\n function PeekQueueValue(container) {\n var pair = container._queue.peek();\n return pair.value;\n }\n function ResetQueue(container) {\n container._queue = new SimpleQueue();\n container._queueTotalSize = 0;\n }\n var ReadableStreamBYOBRequest = (function () {\n function ReadableStreamBYOBRequest() {\n throw new TypeError('Illegal constructor');\n }\n Object.defineProperty(ReadableStreamBYOBRequest.prototype, \"view\", {\n get: function () {\n if (!IsReadableStreamBYOBRequest(this)) {\n throw byobRequestBrandCheckException('view');\n }\n return this._view;\n },\n enumerable: false,\n configurable: true\n });\n ReadableStreamBYOBRequest.prototype.respond = function (bytesWritten) {\n if (!IsReadableStreamBYOBRequest(this)) {\n throw byobRequestBrandCheckException('respond');\n }\n assertRequiredArgument(bytesWritten, 1, 'respond');\n bytesWritten = convertUnsignedLongLongWithEnforceRange(bytesWritten, 'First parameter');\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n if (IsDetachedBuffer(this._view.buffer));\n ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n };\n ReadableStreamBYOBRequest.prototype.respondWithNewView = function (view) {\n if (!IsReadableStreamBYOBRequest(this)) {\n throw byobRequestBrandCheckException('respondWithNewView');\n }\n assertRequiredArgument(view, 1, 'respondWithNewView');\n if (!ArrayBuffer.isView(view)) {\n throw new TypeError('You can only respond with array buffer views');\n }\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n if (IsDetachedBuffer(view.buffer));\n ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n };\n return ReadableStreamBYOBRequest;\n }());\n Object.defineProperties(ReadableStreamBYOBRequest.prototype, {\n respond: { enumerable: true },\n respondWithNewView: { enumerable: true },\n view: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStreamBYOBRequest.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableStreamBYOBRequest',\n configurable: true\n });\n }\n var ReadableByteStreamController = (function () {\n function ReadableByteStreamController() {\n throw new TypeError('Illegal constructor');\n }\n Object.defineProperty(ReadableByteStreamController.prototype, \"byobRequest\", {\n get: function () {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('byobRequest');\n }\n return ReadableByteStreamControllerGetBYOBRequest(this);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ReadableByteStreamController.prototype, \"desiredSize\", {\n get: function () {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('desiredSize');\n }\n return ReadableByteStreamControllerGetDesiredSize(this);\n },\n enumerable: false,\n configurable: true\n });\n ReadableByteStreamController.prototype.close = function () {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('close');\n }\n if (this._closeRequested) {\n throw new TypeError('The stream has already been closed; do not close it again!');\n }\n var state = this._controlledReadableByteStream._state;\n if (state !== 'readable') {\n throw new TypeError(\"The stream (in \" + state + \" state) is not in the readable state and cannot be closed\");\n }\n ReadableByteStreamControllerClose(this);\n };\n ReadableByteStreamController.prototype.enqueue = function (chunk) {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('enqueue');\n }\n assertRequiredArgument(chunk, 1, 'enqueue');\n if (!ArrayBuffer.isView(chunk)) {\n throw new TypeError('chunk must be an array buffer view');\n }\n if (chunk.byteLength === 0) {\n throw new TypeError('chunk must have non-zero byteLength');\n }\n if (chunk.buffer.byteLength === 0) {\n throw new TypeError(\"chunk's buffer must have non-zero byteLength\");\n }\n if (this._closeRequested) {\n throw new TypeError('stream is closed or draining');\n }\n var state = this._controlledReadableByteStream._state;\n if (state !== 'readable') {\n throw new TypeError(\"The stream (in \" + state + \" state) is not in the readable state and cannot be enqueued to\");\n }\n ReadableByteStreamControllerEnqueue(this, chunk);\n };\n ReadableByteStreamController.prototype.error = function (e) {\n if (e === void 0) {\n e = undefined;\n }\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('error');\n }\n ReadableByteStreamControllerError(this, e);\n };\n ReadableByteStreamController.prototype[CancelSteps] = function (reason) {\n ReadableByteStreamControllerClearPendingPullIntos(this);\n ResetQueue(this);\n var result = this._cancelAlgorithm(reason);\n ReadableByteStreamControllerClearAlgorithms(this);\n return result;\n };\n ReadableByteStreamController.prototype[PullSteps] = function (readRequest) {\n var stream = this._controlledReadableByteStream;\n if (this._queueTotalSize > 0) {\n var entry = this._queue.shift();\n this._queueTotalSize -= entry.byteLength;\n ReadableByteStreamControllerHandleQueueDrain(this);\n var view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n readRequest._chunkSteps(view);\n return;\n }\n var autoAllocateChunkSize = this._autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n var buffer = void 0;\n try {\n buffer = new ArrayBuffer(autoAllocateChunkSize);\n } catch (bufferE) {\n readRequest._errorSteps(bufferE);\n return;\n }\n var pullIntoDescriptor = {\n buffer: buffer,\n bufferByteLength: autoAllocateChunkSize,\n byteOffset: 0,\n byteLength: autoAllocateChunkSize,\n bytesFilled: 0,\n elementSize: 1,\n viewConstructor: Uint8Array,\n readerType: 'default'\n };\n this._pendingPullIntos.push(pullIntoDescriptor);\n }\n ReadableStreamAddReadRequest(stream, readRequest);\n ReadableByteStreamControllerCallPullIfNeeded(this);\n };\n return ReadableByteStreamController;\n }());\n Object.defineProperties(ReadableByteStreamController.prototype, {\n close: { enumerable: true },\n enqueue: { enumerable: true },\n error: { enumerable: true },\n byobRequest: { enumerable: true },\n desiredSize: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableByteStreamController.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableByteStreamController',\n configurable: true\n });\n }\n function IsReadableByteStreamController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableByteStream')) {\n return false;\n }\n return x instanceof ReadableByteStreamController;\n }\n function IsReadableStreamBYOBRequest(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n return false;\n }\n return x instanceof ReadableStreamBYOBRequest;\n }\n function ReadableByteStreamControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n if (!shouldPull) {\n return;\n }\n if (controller._pulling) {\n controller._pullAgain = true;\n return;\n }\n controller._pulling = true;\n var pullPromise = controller._pullAlgorithm();\n uponPromise(pullPromise, function () {\n controller._pulling = false;\n if (controller._pullAgain) {\n controller._pullAgain = false;\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n }, function (e) {\n ReadableByteStreamControllerError(controller, e);\n });\n }\n function ReadableByteStreamControllerClearPendingPullIntos(controller) {\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n controller._pendingPullIntos = new SimpleQueue();\n }\n function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {\n var done = false;\n if (stream._state === 'closed') {\n done = true;\n }\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n if (pullIntoDescriptor.readerType === 'default') {\n ReadableStreamFulfillReadRequest(stream, filledView, done);\n } else {\n ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n }\n }\n function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {\n var bytesFilled = pullIntoDescriptor.bytesFilled;\n var elementSize = pullIntoDescriptor.elementSize;\n return new pullIntoDescriptor.viewConstructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);\n }\n function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {\n controller._queue.push({\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength\n });\n controller._queueTotalSize += byteLength;\n }\n function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {\n var elementSize = pullIntoDescriptor.elementSize;\n var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;\n var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;\n var totalBytesToCopyRemaining = maxBytesToCopy;\n var ready = false;\n if (maxAlignedBytes > currentAlignedBytes) {\n totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n ready = true;\n }\n var queue = controller._queue;\n while (totalBytesToCopyRemaining > 0) {\n var headOfQueue = queue.peek();\n var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n CopyDataBlockBytes(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n if (headOfQueue.byteLength === bytesToCopy) {\n queue.shift();\n } else {\n headOfQueue.byteOffset += bytesToCopy;\n headOfQueue.byteLength -= bytesToCopy;\n }\n controller._queueTotalSize -= bytesToCopy;\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n totalBytesToCopyRemaining -= bytesToCopy;\n }\n return ready;\n }\n function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {\n pullIntoDescriptor.bytesFilled += size;\n }\n function ReadableByteStreamControllerHandleQueueDrain(controller) {\n if (controller._queueTotalSize === 0 && controller._closeRequested) {\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamClose(controller._controlledReadableByteStream);\n } else {\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n }\n function ReadableByteStreamControllerInvalidateBYOBRequest(controller) {\n if (controller._byobRequest === null) {\n return;\n }\n controller._byobRequest._associatedReadableByteStreamController = undefined;\n controller._byobRequest._view = null;\n controller._byobRequest = null;\n }\n function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {\n while (controller._pendingPullIntos.length > 0) {\n if (controller._queueTotalSize === 0) {\n return;\n }\n var pullIntoDescriptor = controller._pendingPullIntos.peek();\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) {\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);\n }\n }\n }\n function ReadableByteStreamControllerPullInto(controller, view, readIntoRequest) {\n var stream = controller._controlledReadableByteStream;\n var elementSize = 1;\n if (view.constructor !== DataView) {\n elementSize = view.constructor.BYTES_PER_ELEMENT;\n }\n var ctor = view.constructor;\n var buffer = TransferArrayBuffer(view.buffer);\n var pullIntoDescriptor = {\n buffer: buffer,\n bufferByteLength: buffer.byteLength,\n byteOffset: view.byteOffset,\n byteLength: view.byteLength,\n bytesFilled: 0,\n elementSize: elementSize,\n viewConstructor: ctor,\n readerType: 'byob'\n };\n if (controller._pendingPullIntos.length > 0) {\n controller._pendingPullIntos.push(pullIntoDescriptor);\n ReadableStreamAddReadIntoRequest(stream, readIntoRequest);\n return;\n }\n if (stream._state === 'closed') {\n var emptyView = new ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n readIntoRequest._closeSteps(emptyView);\n return;\n }\n if (controller._queueTotalSize > 0) {\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) {\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n ReadableByteStreamControllerHandleQueueDrain(controller);\n readIntoRequest._chunkSteps(filledView);\n return;\n }\n if (controller._closeRequested) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n readIntoRequest._errorSteps(e);\n return;\n }\n }\n controller._pendingPullIntos.push(pullIntoDescriptor);\n ReadableStreamAddReadIntoRequest(stream, readIntoRequest);\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {\n var stream = controller._controlledReadableByteStream;\n if (ReadableStreamHasBYOBReader(stream)) {\n while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);\n ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);\n }\n }\n }\n function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {\n return;\n }\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n if (remainderSize > 0) {\n var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n var remainder = ArrayBufferSlice(pullIntoDescriptor.buffer, end - remainderSize, end);\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);\n }\n pullIntoDescriptor.bytesFilled -= remainderSize;\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n }\n function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {\n var firstDescriptor = controller._pendingPullIntos.peek();\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n var state = controller._controlledReadableByteStream._state;\n if (state === 'closed') {\n ReadableByteStreamControllerRespondInClosedState(controller);\n } else {\n ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n }\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n function ReadableByteStreamControllerShiftPendingPullInto(controller) {\n var descriptor = controller._pendingPullIntos.shift();\n return descriptor;\n }\n function ReadableByteStreamControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableByteStream;\n if (stream._state !== 'readable') {\n return false;\n }\n if (controller._closeRequested) {\n return false;\n }\n if (!controller._started) {\n return false;\n }\n if (ReadableStreamHasDefaultReader(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n if (ReadableStreamHasBYOBReader(stream) && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n return true;\n }\n var desiredSize = ReadableByteStreamControllerGetDesiredSize(controller);\n if (desiredSize > 0) {\n return true;\n }\n return false;\n }\n function ReadableByteStreamControllerClearAlgorithms(controller) {\n controller._pullAlgorithm = undefined;\n controller._cancelAlgorithm = undefined;\n }\n function ReadableByteStreamControllerClose(controller) {\n var stream = controller._controlledReadableByteStream;\n if (controller._closeRequested || stream._state !== 'readable') {\n return;\n }\n if (controller._queueTotalSize > 0) {\n controller._closeRequested = true;\n return;\n }\n if (controller._pendingPullIntos.length > 0) {\n var firstPendingPullInto = controller._pendingPullIntos.peek();\n if (firstPendingPullInto.bytesFilled > 0) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n throw e;\n }\n }\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamClose(stream);\n }\n function ReadableByteStreamControllerEnqueue(controller, chunk) {\n var stream = controller._controlledReadableByteStream;\n if (controller._closeRequested || stream._state !== 'readable') {\n return;\n }\n var buffer = chunk.buffer;\n var byteOffset = chunk.byteOffset;\n var byteLength = chunk.byteLength;\n var transferredBuffer = TransferArrayBuffer(buffer);\n if (controller._pendingPullIntos.length > 0) {\n var firstPendingPullInto = controller._pendingPullIntos.peek();\n if (IsDetachedBuffer(firstPendingPullInto.buffer));\n firstPendingPullInto.buffer = TransferArrayBuffer(firstPendingPullInto.buffer);\n }\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n if (ReadableStreamHasDefaultReader(stream)) {\n if (ReadableStreamGetNumReadRequests(stream) === 0) {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n } else {\n if (controller._pendingPullIntos.length > 0) {\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n }\n var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n ReadableStreamFulfillReadRequest(stream, transferredView, false);\n }\n } else if (ReadableStreamHasBYOBReader(stream)) {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n } else {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n }\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n function ReadableByteStreamControllerError(controller, e) {\n var stream = controller._controlledReadableByteStream;\n if (stream._state !== 'readable') {\n return;\n }\n ReadableByteStreamControllerClearPendingPullIntos(controller);\n ResetQueue(controller);\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamError(stream, e);\n }\n function ReadableByteStreamControllerGetBYOBRequest(controller) {\n if (controller._byobRequest === null && controller._pendingPullIntos.length > 0) {\n var firstDescriptor = controller._pendingPullIntos.peek();\n var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n var byobRequest = Object.create(ReadableStreamBYOBRequest.prototype);\n SetUpReadableStreamBYOBRequest(byobRequest, controller, view);\n controller._byobRequest = byobRequest;\n }\n return controller._byobRequest;\n }\n function ReadableByteStreamControllerGetDesiredSize(controller) {\n var state = controller._controlledReadableByteStream._state;\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return controller._strategyHWM - controller._queueTotalSize;\n }\n function ReadableByteStreamControllerRespond(controller, bytesWritten) {\n var firstDescriptor = controller._pendingPullIntos.peek();\n var state = controller._controlledReadableByteStream._state;\n if (state === 'closed') {\n if (bytesWritten !== 0) {\n throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');\n }\n } else {\n if (bytesWritten === 0) {\n throw new TypeError('bytesWritten must be greater than 0 when calling respond() on a readable stream');\n }\n if (firstDescriptor.bytesFilled + bytesWritten > firstDescriptor.byteLength) {\n throw new RangeError('bytesWritten out of range');\n }\n }\n firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n }\n function ReadableByteStreamControllerRespondWithNewView(controller, view) {\n var firstDescriptor = controller._pendingPullIntos.peek();\n var state = controller._controlledReadableByteStream._state;\n if (state === 'closed') {\n if (view.byteLength !== 0) {\n throw new TypeError('The view\\'s length must be 0 when calling respondWithNewView() on a closed stream');\n }\n } else {\n if (view.byteLength === 0) {\n throw new TypeError('The view\\'s length must be greater than 0 when calling respondWithNewView() on a readable stream');\n }\n }\n if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {\n throw new RangeError('The region specified by view does not match byobRequest');\n }\n if (firstDescriptor.bufferByteLength !== view.buffer.byteLength) {\n throw new RangeError('The buffer of view has different capacity than byobRequest');\n }\n if (firstDescriptor.bytesFilled + view.byteLength > firstDescriptor.byteLength) {\n throw new RangeError('The region specified by view is larger than byobRequest');\n }\n var viewByteLength = view.byteLength;\n firstDescriptor.buffer = TransferArrayBuffer(view.buffer);\n ReadableByteStreamControllerRespondInternal(controller, viewByteLength);\n }\n function SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize) {\n controller._controlledReadableByteStream = stream;\n controller._pullAgain = false;\n controller._pulling = false;\n controller._byobRequest = null;\n controller._queue = controller._queueTotalSize = undefined;\n ResetQueue(controller);\n controller._closeRequested = false;\n controller._started = false;\n controller._strategyHWM = highWaterMark;\n controller._pullAlgorithm = pullAlgorithm;\n controller._cancelAlgorithm = cancelAlgorithm;\n controller._autoAllocateChunkSize = autoAllocateChunkSize;\n controller._pendingPullIntos = new SimpleQueue();\n stream._readableStreamController = controller;\n var startResult = startAlgorithm();\n uponPromise(promiseResolvedWith(startResult), function () {\n controller._started = true;\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }, function (r) {\n ReadableByteStreamControllerError(controller, r);\n });\n }\n function SetUpReadableByteStreamControllerFromUnderlyingSource(stream, underlyingByteSource, highWaterMark) {\n var controller = Object.create(ReadableByteStreamController.prototype);\n var startAlgorithm = function () {\n return undefined;\n };\n var pullAlgorithm = function () {\n return promiseResolvedWith(undefined);\n };\n var cancelAlgorithm = function () {\n return promiseResolvedWith(undefined);\n };\n if (underlyingByteSource.start !== undefined) {\n startAlgorithm = function () {\n return underlyingByteSource.start(controller);\n };\n }\n if (underlyingByteSource.pull !== undefined) {\n pullAlgorithm = function () {\n return underlyingByteSource.pull(controller);\n };\n }\n if (underlyingByteSource.cancel !== undefined) {\n cancelAlgorithm = function (reason) {\n return underlyingByteSource.cancel(reason);\n };\n }\n var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n if (autoAllocateChunkSize === 0) {\n throw new TypeError('autoAllocateChunkSize must be greater than 0');\n }\n SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize);\n }\n function SetUpReadableStreamBYOBRequest(request, controller, view) {\n request._associatedReadableByteStreamController = controller;\n request._view = view;\n }\n function byobRequestBrandCheckException(name) {\n return new TypeError(\"ReadableStreamBYOBRequest.prototype.\" + name + \" can only be used on a ReadableStreamBYOBRequest\");\n }\n function byteStreamControllerBrandCheckException(name) {\n return new TypeError(\"ReadableByteStreamController.prototype.\" + name + \" can only be used on a ReadableByteStreamController\");\n }\n function AcquireReadableStreamBYOBReader(stream) {\n return new ReadableStreamBYOBReader(stream);\n }\n function ReadableStreamAddReadIntoRequest(stream, readIntoRequest) {\n stream._reader._readIntoRequests.push(readIntoRequest);\n }\n function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {\n var reader = stream._reader;\n var readIntoRequest = reader._readIntoRequests.shift();\n if (done) {\n readIntoRequest._closeSteps(chunk);\n } else {\n readIntoRequest._chunkSteps(chunk);\n }\n }\n function ReadableStreamGetNumReadIntoRequests(stream) {\n return stream._reader._readIntoRequests.length;\n }\n function ReadableStreamHasBYOBReader(stream) {\n var reader = stream._reader;\n if (reader === undefined) {\n return false;\n }\n if (!IsReadableStreamBYOBReader(reader)) {\n return false;\n }\n return true;\n }\n var ReadableStreamBYOBReader = (function () {\n function ReadableStreamBYOBReader(stream) {\n assertRequiredArgument(stream, 1, 'ReadableStreamBYOBReader');\n assertReadableStream(stream, 'First parameter');\n if (IsReadableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n if (!IsReadableByteStreamController(stream._readableStreamController)) {\n throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');\n }\n ReadableStreamReaderGenericInitialize(this, stream);\n this._readIntoRequests = new SimpleQueue();\n }\n Object.defineProperty(ReadableStreamBYOBReader.prototype, \"closed\", {\n get: function () {\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('closed'));\n }\n return this._closedPromise;\n },\n enumerable: false,\n configurable: true\n });\n ReadableStreamBYOBReader.prototype.cancel = function (reason) {\n if (reason === void 0) {\n reason = undefined;\n }\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('cancel'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('cancel'));\n }\n return ReadableStreamReaderGenericCancel(this, reason);\n };\n ReadableStreamBYOBReader.prototype.read = function (view) {\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('read'));\n }\n if (!ArrayBuffer.isView(view)) {\n return promiseRejectedWith(new TypeError('view must be an array buffer view'));\n }\n if (view.byteLength === 0) {\n return promiseRejectedWith(new TypeError('view must have non-zero byteLength'));\n }\n if (view.buffer.byteLength === 0) {\n return promiseRejectedWith(new TypeError(\"view's buffer must have non-zero byteLength\"));\n }\n if (IsDetachedBuffer(view.buffer));\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('read from'));\n }\n var resolvePromise;\n var rejectPromise;\n var promise = newPromise(function (resolve, reject) {\n resolvePromise = resolve;\n rejectPromise = reject;\n });\n var readIntoRequest = {\n _chunkSteps: function (chunk) {\n return resolvePromise({\n value: chunk,\n done: false\n });\n },\n _closeSteps: function (chunk) {\n return resolvePromise({\n value: chunk,\n done: true\n });\n },\n _errorSteps: function (e) {\n return rejectPromise(e);\n }\n };\n ReadableStreamBYOBReaderRead(this, view, readIntoRequest);\n return promise;\n };\n ReadableStreamBYOBReader.prototype.releaseLock = function () {\n if (!IsReadableStreamBYOBReader(this)) {\n throw byobReaderBrandCheckException('releaseLock');\n }\n if (this._ownerReadableStream === undefined) {\n return;\n }\n if (this._readIntoRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n ReadableStreamReaderGenericRelease(this);\n };\n return ReadableStreamBYOBReader;\n }());\n Object.defineProperties(ReadableStreamBYOBReader.prototype, {\n cancel: { enumerable: true },\n read: { enumerable: true },\n releaseLock: { enumerable: true },\n closed: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStreamBYOBReader.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableStreamBYOBReader',\n configurable: true\n });\n }\n function IsReadableStreamBYOBReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n return false;\n }\n return x instanceof ReadableStreamBYOBReader;\n }\n function ReadableStreamBYOBReaderRead(reader, view, readIntoRequest) {\n var stream = reader._ownerReadableStream;\n stream._disturbed = true;\n if (stream._state === 'errored') {\n readIntoRequest._errorSteps(stream._storedError);\n } else {\n ReadableByteStreamControllerPullInto(stream._readableStreamController, view, readIntoRequest);\n }\n }\n function byobReaderBrandCheckException(name) {\n return new TypeError(\"ReadableStreamBYOBReader.prototype.\" + name + \" can only be used on a ReadableStreamBYOBReader\");\n }\n function ExtractHighWaterMark(strategy, defaultHWM) {\n var highWaterMark = strategy.highWaterMark;\n if (highWaterMark === undefined) {\n return defaultHWM;\n }\n if (NumberIsNaN(highWaterMark) || highWaterMark < 0) {\n throw new RangeError('Invalid highWaterMark');\n }\n return highWaterMark;\n }\n function ExtractSizeAlgorithm(strategy) {\n var size = strategy.size;\n if (!size) {\n return function () {\n return 1;\n };\n }\n return size;\n }\n function convertQueuingStrategy(init, context) {\n assertDictionary(init, context);\n var highWaterMark = init === null || init === void 0 ? void 0 : init.highWaterMark;\n var size = init === null || init === void 0 ? void 0 : init.size;\n return {\n highWaterMark: highWaterMark === undefined ? undefined : convertUnrestrictedDouble(highWaterMark),\n size: size === undefined ? undefined : convertQueuingStrategySize(size, context + \" has member 'size' that\")\n };\n }\n function convertQueuingStrategySize(fn, context) {\n assertFunction(fn, context);\n return function (chunk) {\n return convertUnrestrictedDouble(fn(chunk));\n };\n }\n function convertUnderlyingSink(original, context) {\n assertDictionary(original, context);\n var abort = original === null || original === void 0 ? void 0 : original.abort;\n var close = original === null || original === void 0 ? void 0 : original.close;\n var start = original === null || original === void 0 ? void 0 : original.start;\n var type = original === null || original === void 0 ? void 0 : original.type;\n var write = original === null || original === void 0 ? void 0 : original.write;\n return {\n abort: abort === undefined ? undefined : convertUnderlyingSinkAbortCallback(abort, original, context + \" has member 'abort' that\"),\n close: close === undefined ? undefined : convertUnderlyingSinkCloseCallback(close, original, context + \" has member 'close' that\"),\n start: start === undefined ? undefined : convertUnderlyingSinkStartCallback(start, original, context + \" has member 'start' that\"),\n write: write === undefined ? undefined : convertUnderlyingSinkWriteCallback(write, original, context + \" has member 'write' that\"),\n type: type\n };\n }\n function convertUnderlyingSinkAbortCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (reason) {\n return promiseCall(fn, original, [reason]);\n };\n }\n function convertUnderlyingSinkCloseCallback(fn, original, context) {\n assertFunction(fn, context);\n return function () {\n return promiseCall(fn, original, []);\n };\n }\n function convertUnderlyingSinkStartCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (controller) {\n return reflectCall(fn, original, [controller]);\n };\n }\n function convertUnderlyingSinkWriteCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (chunk, controller) {\n return promiseCall(fn, original, [\n chunk,\n controller\n ]);\n };\n }\n function assertWritableStream(x, context) {\n if (!IsWritableStream(x)) {\n throw new TypeError(context + \" is not a WritableStream.\");\n }\n }\n function isAbortSignal(value) {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n try {\n return typeof value.aborted === 'boolean';\n } catch (_a) {\n return false;\n }\n }\n var supportsAbortController = typeof AbortController === 'function';\n function createAbortController() {\n if (supportsAbortController) {\n return new AbortController();\n }\n return undefined;\n }\n var WritableStream = (function () {\n function WritableStream(rawUnderlyingSink, rawStrategy) {\n if (rawUnderlyingSink === void 0) {\n rawUnderlyingSink = {};\n }\n if (rawStrategy === void 0) {\n rawStrategy = {};\n }\n if (rawUnderlyingSink === undefined) {\n rawUnderlyingSink = null;\n } else {\n assertObject(rawUnderlyingSink, 'First parameter');\n }\n var strategy = convertQueuingStrategy(rawStrategy, 'Second parameter');\n var underlyingSink = convertUnderlyingSink(rawUnderlyingSink, 'First parameter');\n InitializeWritableStream(this);\n var type = underlyingSink.type;\n if (type !== undefined) {\n throw new RangeError('Invalid type is specified');\n }\n var sizeAlgorithm = ExtractSizeAlgorithm(strategy);\n var highWaterMark = ExtractHighWaterMark(strategy, 1);\n SetUpWritableStreamDefaultControllerFromUnderlyingSink(this, underlyingSink, highWaterMark, sizeAlgorithm);\n }\n Object.defineProperty(WritableStream.prototype, \"locked\", {\n get: function () {\n if (!IsWritableStream(this)) {\n throw streamBrandCheckException$2('locked');\n }\n return IsWritableStreamLocked(this);\n },\n enumerable: false,\n configurable: true\n });\n WritableStream.prototype.abort = function (reason) {\n if (reason === void 0) {\n reason = undefined;\n }\n if (!IsWritableStream(this)) {\n return promiseRejectedWith(streamBrandCheckException$2('abort'));\n }\n if (IsWritableStreamLocked(this)) {\n return promiseRejectedWith(new TypeError('Cannot abort a stream that already has a writer'));\n }\n return WritableStreamAbort(this, reason);\n };\n WritableStream.prototype.close = function () {\n if (!IsWritableStream(this)) {\n return promiseRejectedWith(streamBrandCheckException$2('close'));\n }\n if (IsWritableStreamLocked(this)) {\n return promiseRejectedWith(new TypeError('Cannot close a stream that already has a writer'));\n }\n if (WritableStreamCloseQueuedOrInFlight(this)) {\n return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n }\n return WritableStreamClose(this);\n };\n WritableStream.prototype.getWriter = function () {\n if (!IsWritableStream(this)) {\n throw streamBrandCheckException$2('getWriter');\n }\n return AcquireWritableStreamDefaultWriter(this);\n };\n return WritableStream;\n }());\n Object.defineProperties(WritableStream.prototype, {\n abort: { enumerable: true },\n close: { enumerable: true },\n getWriter: { enumerable: true },\n locked: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(WritableStream.prototype, SymbolPolyfill.toStringTag, {\n value: 'WritableStream',\n configurable: true\n });\n }\n function AcquireWritableStreamDefaultWriter(stream) {\n return new WritableStreamDefaultWriter(stream);\n }\n function CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) {\n if (highWaterMark === void 0) {\n highWaterMark = 1;\n }\n if (sizeAlgorithm === void 0) {\n sizeAlgorithm = function () {\n return 1;\n };\n }\n var stream = Object.create(WritableStream.prototype);\n InitializeWritableStream(stream);\n var controller = Object.create(WritableStreamDefaultController.prototype);\n SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm);\n return stream;\n }\n function InitializeWritableStream(stream) {\n stream._state = 'writable';\n stream._storedError = undefined;\n stream._writer = undefined;\n stream._writableStreamController = undefined;\n stream._writeRequests = new SimpleQueue();\n stream._inFlightWriteRequest = undefined;\n stream._closeRequest = undefined;\n stream._inFlightCloseRequest = undefined;\n stream._pendingAbortRequest = undefined;\n stream._backpressure = false;\n }\n function IsWritableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n return false;\n }\n return x instanceof WritableStream;\n }\n function IsWritableStreamLocked(stream) {\n if (stream._writer === undefined) {\n return false;\n }\n return true;\n }\n function WritableStreamAbort(stream, reason) {\n var _a;\n if (stream._state === 'closed' || stream._state === 'errored') {\n return promiseResolvedWith(undefined);\n }\n stream._writableStreamController._abortReason = reason;\n (_a = stream._writableStreamController._abortController) === null || _a === void 0 ? void 0 : _a.abort();\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return promiseResolvedWith(undefined);\n }\n if (stream._pendingAbortRequest !== undefined) {\n return stream._pendingAbortRequest._promise;\n }\n var wasAlreadyErroring = false;\n if (state === 'erroring') {\n wasAlreadyErroring = true;\n reason = undefined;\n }\n var promise = newPromise(function (resolve, reject) {\n stream._pendingAbortRequest = {\n _promise: undefined,\n _resolve: resolve,\n _reject: reject,\n _reason: reason,\n _wasAlreadyErroring: wasAlreadyErroring\n };\n });\n stream._pendingAbortRequest._promise = promise;\n if (!wasAlreadyErroring) {\n WritableStreamStartErroring(stream, reason);\n }\n return promise;\n }\n function WritableStreamClose(stream) {\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return promiseRejectedWith(new TypeError(\"The stream (in \" + state + \" state) is not in the writable state and cannot be closed\"));\n }\n var promise = newPromise(function (resolve, reject) {\n var closeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n stream._closeRequest = closeRequest;\n });\n var writer = stream._writer;\n if (writer !== undefined && stream._backpressure && state === 'writable') {\n defaultWriterReadyPromiseResolve(writer);\n }\n WritableStreamDefaultControllerClose(stream._writableStreamController);\n return promise;\n }\n function WritableStreamAddWriteRequest(stream) {\n var promise = newPromise(function (resolve, reject) {\n var writeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n stream._writeRequests.push(writeRequest);\n });\n return promise;\n }\n function WritableStreamDealWithRejection(stream, error) {\n var state = stream._state;\n if (state === 'writable') {\n WritableStreamStartErroring(stream, error);\n return;\n }\n WritableStreamFinishErroring(stream);\n }\n function WritableStreamStartErroring(stream, reason) {\n var controller = stream._writableStreamController;\n stream._state = 'erroring';\n stream._storedError = reason;\n var writer = stream._writer;\n if (writer !== undefined) {\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n }\n if (!WritableStreamHasOperationMarkedInFlight(stream) && controller._started) {\n WritableStreamFinishErroring(stream);\n }\n }\n function WritableStreamFinishErroring(stream) {\n stream._state = 'errored';\n stream._writableStreamController[ErrorSteps]();\n var storedError = stream._storedError;\n stream._writeRequests.forEach(function (writeRequest) {\n writeRequest._reject(storedError);\n });\n stream._writeRequests = new SimpleQueue();\n if (stream._pendingAbortRequest === undefined) {\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n var abortRequest = stream._pendingAbortRequest;\n stream._pendingAbortRequest = undefined;\n if (abortRequest._wasAlreadyErroring) {\n abortRequest._reject(storedError);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n var promise = stream._writableStreamController[AbortSteps](abortRequest._reason);\n uponPromise(promise, function () {\n abortRequest._resolve();\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n }, function (reason) {\n abortRequest._reject(reason);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n });\n }\n function WritableStreamFinishInFlightWrite(stream) {\n stream._inFlightWriteRequest._resolve(undefined);\n stream._inFlightWriteRequest = undefined;\n }\n function WritableStreamFinishInFlightWriteWithError(stream, error) {\n stream._inFlightWriteRequest._reject(error);\n stream._inFlightWriteRequest = undefined;\n WritableStreamDealWithRejection(stream, error);\n }\n function WritableStreamFinishInFlightClose(stream) {\n stream._inFlightCloseRequest._resolve(undefined);\n stream._inFlightCloseRequest = undefined;\n var state = stream._state;\n if (state === 'erroring') {\n stream._storedError = undefined;\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._resolve();\n stream._pendingAbortRequest = undefined;\n }\n }\n stream._state = 'closed';\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseResolve(writer);\n }\n }\n function WritableStreamFinishInFlightCloseWithError(stream, error) {\n stream._inFlightCloseRequest._reject(error);\n stream._inFlightCloseRequest = undefined;\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._reject(error);\n stream._pendingAbortRequest = undefined;\n }\n WritableStreamDealWithRejection(stream, error);\n }\n function WritableStreamCloseQueuedOrInFlight(stream) {\n if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n return true;\n }\n function WritableStreamHasOperationMarkedInFlight(stream) {\n if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n return true;\n }\n function WritableStreamMarkCloseRequestInFlight(stream) {\n stream._inFlightCloseRequest = stream._closeRequest;\n stream._closeRequest = undefined;\n }\n function WritableStreamMarkFirstWriteRequestInFlight(stream) {\n stream._inFlightWriteRequest = stream._writeRequests.shift();\n }\n function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {\n if (stream._closeRequest !== undefined) {\n stream._closeRequest._reject(stream._storedError);\n stream._closeRequest = undefined;\n }\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseReject(writer, stream._storedError);\n }\n }\n function WritableStreamUpdateBackpressure(stream, backpressure) {\n var writer = stream._writer;\n if (writer !== undefined && backpressure !== stream._backpressure) {\n if (backpressure) {\n defaultWriterReadyPromiseReset(writer);\n } else {\n defaultWriterReadyPromiseResolve(writer);\n }\n }\n stream._backpressure = backpressure;\n }\n var WritableStreamDefaultWriter = (function () {\n function WritableStreamDefaultWriter(stream) {\n assertRequiredArgument(stream, 1, 'WritableStreamDefaultWriter');\n assertWritableStream(stream, 'First parameter');\n if (IsWritableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n }\n this._ownerWritableStream = stream;\n stream._writer = this;\n var state = stream._state;\n if (state === 'writable') {\n if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._backpressure) {\n defaultWriterReadyPromiseInitialize(this);\n } else {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n }\n defaultWriterClosedPromiseInitialize(this);\n } else if (state === 'erroring') {\n defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n defaultWriterClosedPromiseInitialize(this);\n } else if (state === 'closed') {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n defaultWriterClosedPromiseInitializeAsResolved(this);\n } else {\n var storedError = stream._storedError;\n defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\n }\n }\n Object.defineProperty(WritableStreamDefaultWriter.prototype, \"closed\", {\n get: function () {\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('closed'));\n }\n return this._closedPromise;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WritableStreamDefaultWriter.prototype, \"desiredSize\", {\n get: function () {\n if (!IsWritableStreamDefaultWriter(this)) {\n throw defaultWriterBrandCheckException('desiredSize');\n }\n if (this._ownerWritableStream === undefined) {\n throw defaultWriterLockException('desiredSize');\n }\n return WritableStreamDefaultWriterGetDesiredSize(this);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WritableStreamDefaultWriter.prototype, \"ready\", {\n get: function () {\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('ready'));\n }\n return this._readyPromise;\n },\n enumerable: false,\n configurable: true\n });\n WritableStreamDefaultWriter.prototype.abort = function (reason) {\n if (reason === void 0) {\n reason = undefined;\n }\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('abort'));\n }\n if (this._ownerWritableStream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('abort'));\n }\n return WritableStreamDefaultWriterAbort(this, reason);\n };\n WritableStreamDefaultWriter.prototype.close = function () {\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('close'));\n }\n var stream = this._ownerWritableStream;\n if (stream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('close'));\n }\n if (WritableStreamCloseQueuedOrInFlight(stream)) {\n return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n }\n return WritableStreamDefaultWriterClose(this);\n };\n WritableStreamDefaultWriter.prototype.releaseLock = function () {\n if (!IsWritableStreamDefaultWriter(this)) {\n throw defaultWriterBrandCheckException('releaseLock');\n }\n var stream = this._ownerWritableStream;\n if (stream === undefined) {\n return;\n }\n WritableStreamDefaultWriterRelease(this);\n };\n WritableStreamDefaultWriter.prototype.write = function (chunk) {\n if (chunk === void 0) {\n chunk = undefined;\n }\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('write'));\n }\n if (this._ownerWritableStream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('write to'));\n }\n return WritableStreamDefaultWriterWrite(this, chunk);\n };\n return WritableStreamDefaultWriter;\n }());\n Object.defineProperties(WritableStreamDefaultWriter.prototype, {\n abort: { enumerable: true },\n close: { enumerable: true },\n releaseLock: { enumerable: true },\n write: { enumerable: true },\n closed: { enumerable: true },\n desiredSize: { enumerable: true },\n ready: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(WritableStreamDefaultWriter.prototype, SymbolPolyfill.toStringTag, {\n value: 'WritableStreamDefaultWriter',\n configurable: true\n });\n }\n function IsWritableStreamDefaultWriter(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n return false;\n }\n return x instanceof WritableStreamDefaultWriter;\n }\n function WritableStreamDefaultWriterAbort(writer, reason) {\n var stream = writer._ownerWritableStream;\n return WritableStreamAbort(stream, reason);\n }\n function WritableStreamDefaultWriterClose(writer) {\n var stream = writer._ownerWritableStream;\n return WritableStreamClose(stream);\n }\n function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {\n var stream = writer._ownerWritableStream;\n var state = stream._state;\n if (WritableStreamCloseQueuedOrInFlight(stream) || state === 'closed') {\n return promiseResolvedWith(undefined);\n }\n if (state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n return WritableStreamDefaultWriterClose(writer);\n }\n function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {\n if (writer._closedPromiseState === 'pending') {\n defaultWriterClosedPromiseReject(writer, error);\n } else {\n defaultWriterClosedPromiseResetToRejected(writer, error);\n }\n }\n function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {\n if (writer._readyPromiseState === 'pending') {\n defaultWriterReadyPromiseReject(writer, error);\n } else {\n defaultWriterReadyPromiseResetToRejected(writer, error);\n }\n }\n function WritableStreamDefaultWriterGetDesiredSize(writer) {\n var stream = writer._ownerWritableStream;\n var state = stream._state;\n if (state === 'errored' || state === 'erroring') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n }\n function WritableStreamDefaultWriterRelease(writer) {\n var stream = writer._ownerWritableStream;\n var releasedError = new TypeError(\"Writer was released and can no longer be used to monitor the stream's closedness\");\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\n WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);\n stream._writer = undefined;\n writer._ownerWritableStream = undefined;\n }\n function WritableStreamDefaultWriterWrite(writer, chunk) {\n var stream = writer._ownerWritableStream;\n var controller = stream._writableStreamController;\n var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n if (stream !== writer._ownerWritableStream) {\n return promiseRejectedWith(defaultWriterLockException('write to'));\n }\n var state = stream._state;\n if (state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n if (WritableStreamCloseQueuedOrInFlight(stream) || state === 'closed') {\n return promiseRejectedWith(new TypeError('The stream is closing or closed and cannot be written to'));\n }\n if (state === 'erroring') {\n return promiseRejectedWith(stream._storedError);\n }\n var promise = WritableStreamAddWriteRequest(stream);\n WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n return promise;\n }\n var closeSentinel = {};\n var WritableStreamDefaultController = (function () {\n function WritableStreamDefaultController() {\n throw new TypeError('Illegal constructor');\n }\n Object.defineProperty(WritableStreamDefaultController.prototype, \"abortReason\", {\n get: function () {\n if (!IsWritableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$2('abortReason');\n }\n return this._abortReason;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WritableStreamDefaultController.prototype, \"signal\", {\n get: function () {\n if (!IsWritableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$2('signal');\n }\n if (this._abortController === undefined) {\n throw new TypeError('WritableStreamDefaultController.prototype.signal is not supported');\n }\n return this._abortController.signal;\n },\n enumerable: false,\n configurable: true\n });\n WritableStreamDefaultController.prototype.error = function (e) {\n if (e === void 0) {\n e = undefined;\n }\n if (!IsWritableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$2('error');\n }\n var state = this._controlledWritableStream._state;\n if (state !== 'writable') {\n return;\n }\n WritableStreamDefaultControllerError(this, e);\n };\n WritableStreamDefaultController.prototype[AbortSteps] = function (reason) {\n var result = this._abortAlgorithm(reason);\n WritableStreamDefaultControllerClearAlgorithms(this);\n return result;\n };\n WritableStreamDefaultController.prototype[ErrorSteps] = function () {\n ResetQueue(this);\n };\n return WritableStreamDefaultController;\n }());\n Object.defineProperties(WritableStreamDefaultController.prototype, {\n abortReason: { enumerable: true },\n signal: { enumerable: true },\n error: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(WritableStreamDefaultController.prototype, SymbolPolyfill.toStringTag, {\n value: 'WritableStreamDefaultController',\n configurable: true\n });\n }\n function IsWritableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledWritableStream')) {\n return false;\n }\n return x instanceof WritableStreamDefaultController;\n }\n function SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) {\n controller._controlledWritableStream = stream;\n stream._writableStreamController = controller;\n controller._queue = undefined;\n controller._queueTotalSize = undefined;\n ResetQueue(controller);\n controller._abortReason = undefined;\n controller._abortController = createAbortController();\n controller._started = false;\n controller._strategySizeAlgorithm = sizeAlgorithm;\n controller._strategyHWM = highWaterMark;\n controller._writeAlgorithm = writeAlgorithm;\n controller._closeAlgorithm = closeAlgorithm;\n controller._abortAlgorithm = abortAlgorithm;\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n var startResult = startAlgorithm();\n var startPromise = promiseResolvedWith(startResult);\n uponPromise(startPromise, function () {\n controller._started = true;\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }, function (r) {\n controller._started = true;\n WritableStreamDealWithRejection(stream, r);\n });\n }\n function SetUpWritableStreamDefaultControllerFromUnderlyingSink(stream, underlyingSink, highWaterMark, sizeAlgorithm) {\n var controller = Object.create(WritableStreamDefaultController.prototype);\n var startAlgorithm = function () {\n return undefined;\n };\n var writeAlgorithm = function () {\n return promiseResolvedWith(undefined);\n };\n var closeAlgorithm = function () {\n return promiseResolvedWith(undefined);\n };\n var abortAlgorithm = function () {\n return promiseResolvedWith(undefined);\n };\n if (underlyingSink.start !== undefined) {\n startAlgorithm = function () {\n return underlyingSink.start(controller);\n };\n }\n if (underlyingSink.write !== undefined) {\n writeAlgorithm = function (chunk) {\n return underlyingSink.write(chunk, controller);\n };\n }\n if (underlyingSink.close !== undefined) {\n closeAlgorithm = function () {\n return underlyingSink.close();\n };\n }\n if (underlyingSink.abort !== undefined) {\n abortAlgorithm = function (reason) {\n return underlyingSink.abort(reason);\n };\n }\n SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm);\n }\n function WritableStreamDefaultControllerClearAlgorithms(controller) {\n controller._writeAlgorithm = undefined;\n controller._closeAlgorithm = undefined;\n controller._abortAlgorithm = undefined;\n controller._strategySizeAlgorithm = undefined;\n }\n function WritableStreamDefaultControllerClose(controller) {\n EnqueueValueWithSize(controller, closeSentinel, 0);\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }\n function WritableStreamDefaultControllerGetChunkSize(controller, chunk) {\n try {\n return controller._strategySizeAlgorithm(chunk);\n } catch (chunkSizeE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n return 1;\n }\n }\n function WritableStreamDefaultControllerGetDesiredSize(controller) {\n return controller._strategyHWM - controller._queueTotalSize;\n }\n function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {\n try {\n EnqueueValueWithSize(controller, chunk, chunkSize);\n } catch (enqueueE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n return;\n }\n var stream = controller._controlledWritableStream;\n if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }\n function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {\n var stream = controller._controlledWritableStream;\n if (!controller._started) {\n return;\n }\n if (stream._inFlightWriteRequest !== undefined) {\n return;\n }\n var state = stream._state;\n if (state === 'erroring') {\n WritableStreamFinishErroring(stream);\n return;\n }\n if (controller._queue.length === 0) {\n return;\n }\n var value = PeekQueueValue(controller);\n if (value === closeSentinel) {\n WritableStreamDefaultControllerProcessClose(controller);\n } else {\n WritableStreamDefaultControllerProcessWrite(controller, value);\n }\n }\n function WritableStreamDefaultControllerErrorIfNeeded(controller, error) {\n if (controller._controlledWritableStream._state === 'writable') {\n WritableStreamDefaultControllerError(controller, error);\n }\n }\n function WritableStreamDefaultControllerProcessClose(controller) {\n var stream = controller._controlledWritableStream;\n WritableStreamMarkCloseRequestInFlight(stream);\n DequeueValue(controller);\n var sinkClosePromise = controller._closeAlgorithm();\n WritableStreamDefaultControllerClearAlgorithms(controller);\n uponPromise(sinkClosePromise, function () {\n WritableStreamFinishInFlightClose(stream);\n }, function (reason) {\n WritableStreamFinishInFlightCloseWithError(stream, reason);\n });\n }\n function WritableStreamDefaultControllerProcessWrite(controller, chunk) {\n var stream = controller._controlledWritableStream;\n WritableStreamMarkFirstWriteRequestInFlight(stream);\n var sinkWritePromise = controller._writeAlgorithm(chunk);\n uponPromise(sinkWritePromise, function () {\n WritableStreamFinishInFlightWrite(stream);\n var state = stream._state;\n DequeueValue(controller);\n if (!WritableStreamCloseQueuedOrInFlight(stream) && state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }, function (reason) {\n if (stream._state === 'writable') {\n WritableStreamDefaultControllerClearAlgorithms(controller);\n }\n WritableStreamFinishInFlightWriteWithError(stream, reason);\n });\n }\n function WritableStreamDefaultControllerGetBackpressure(controller) {\n var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n return desiredSize <= 0;\n }\n function WritableStreamDefaultControllerError(controller, error) {\n var stream = controller._controlledWritableStream;\n WritableStreamDefaultControllerClearAlgorithms(controller);\n WritableStreamStartErroring(stream, error);\n }\n function streamBrandCheckException$2(name) {\n return new TypeError(\"WritableStream.prototype.\" + name + \" can only be used on a WritableStream\");\n }\n function defaultControllerBrandCheckException$2(name) {\n return new TypeError(\"WritableStreamDefaultController.prototype.\" + name + \" can only be used on a WritableStreamDefaultController\");\n }\n function defaultWriterBrandCheckException(name) {\n return new TypeError(\"WritableStreamDefaultWriter.prototype.\" + name + \" can only be used on a WritableStreamDefaultWriter\");\n }\n function defaultWriterLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released writer');\n }\n function defaultWriterClosedPromiseInitialize(writer) {\n writer._closedPromise = newPromise(function (resolve, reject) {\n writer._closedPromise_resolve = resolve;\n writer._closedPromise_reject = reject;\n writer._closedPromiseState = 'pending';\n });\n }\n function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {\n defaultWriterClosedPromiseInitialize(writer);\n defaultWriterClosedPromiseReject(writer, reason);\n }\n function defaultWriterClosedPromiseInitializeAsResolved(writer) {\n defaultWriterClosedPromiseInitialize(writer);\n defaultWriterClosedPromiseResolve(writer);\n }\n function defaultWriterClosedPromiseReject(writer, reason) {\n if (writer._closedPromise_reject === undefined) {\n return;\n }\n setPromiseIsHandledToTrue(writer._closedPromise);\n writer._closedPromise_reject(reason);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'rejected';\n }\n function defaultWriterClosedPromiseResetToRejected(writer, reason) {\n defaultWriterClosedPromiseInitializeAsRejected(writer, reason);\n }\n function defaultWriterClosedPromiseResolve(writer) {\n if (writer._closedPromise_resolve === undefined) {\n return;\n }\n writer._closedPromise_resolve(undefined);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'resolved';\n }\n function defaultWriterReadyPromiseInitialize(writer) {\n writer._readyPromise = newPromise(function (resolve, reject) {\n writer._readyPromise_resolve = resolve;\n writer._readyPromise_reject = reject;\n });\n writer._readyPromiseState = 'pending';\n }\n function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {\n defaultWriterReadyPromiseInitialize(writer);\n defaultWriterReadyPromiseReject(writer, reason);\n }\n function defaultWriterReadyPromiseInitializeAsResolved(writer) {\n defaultWriterReadyPromiseInitialize(writer);\n defaultWriterReadyPromiseResolve(writer);\n }\n function defaultWriterReadyPromiseReject(writer, reason) {\n if (writer._readyPromise_reject === undefined) {\n return;\n }\n setPromiseIsHandledToTrue(writer._readyPromise);\n writer._readyPromise_reject(reason);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'rejected';\n }\n function defaultWriterReadyPromiseReset(writer) {\n defaultWriterReadyPromiseInitialize(writer);\n }\n function defaultWriterReadyPromiseResetToRejected(writer, reason) {\n defaultWriterReadyPromiseInitializeAsRejected(writer, reason);\n }\n function defaultWriterReadyPromiseResolve(writer) {\n if (writer._readyPromise_resolve === undefined) {\n return;\n }\n writer._readyPromise_resolve(undefined);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'fulfilled';\n }\n var NativeDOMException = typeof DOMException !== 'undefined' ? DOMException : undefined;\n function isDOMExceptionConstructor(ctor) {\n if (!(typeof ctor === 'function' || typeof ctor === 'object')) {\n return false;\n }\n try {\n new ctor();\n return true;\n } catch (_a) {\n return false;\n }\n }\n function createDOMExceptionPolyfill() {\n var ctor = function DOMException(message, name) {\n this.message = message || '';\n this.name = name || 'Error';\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n };\n ctor.prototype = Object.create(Error.prototype);\n Object.defineProperty(ctor.prototype, 'constructor', {\n value: ctor,\n writable: true,\n configurable: true\n });\n return ctor;\n }\n var DOMException$1 = isDOMExceptionConstructor(NativeDOMException) ? NativeDOMException : createDOMExceptionPolyfill();\n function ReadableStreamPipeTo(source, dest, preventClose, preventAbort, preventCancel, signal) {\n var reader = AcquireReadableStreamDefaultReader(source);\n var writer = AcquireWritableStreamDefaultWriter(dest);\n source._disturbed = true;\n var shuttingDown = false;\n var currentWrite = promiseResolvedWith(undefined);\n return newPromise(function (resolve, reject) {\n var abortAlgorithm;\n if (signal !== undefined) {\n abortAlgorithm = function () {\n var error = new DOMException$1('Aborted', 'AbortError');\n var actions = [];\n if (!preventAbort) {\n actions.push(function () {\n if (dest._state === 'writable') {\n return WritableStreamAbort(dest, error);\n }\n return promiseResolvedWith(undefined);\n });\n }\n if (!preventCancel) {\n actions.push(function () {\n if (source._state === 'readable') {\n return ReadableStreamCancel(source, error);\n }\n return promiseResolvedWith(undefined);\n });\n }\n shutdownWithAction(function () {\n return Promise.all(actions.map(function (action) {\n return action();\n }));\n }, true, error);\n };\n if (signal.aborted) {\n abortAlgorithm();\n return;\n }\n signal.addEventListener('abort', abortAlgorithm);\n }\n function pipeLoop() {\n return newPromise(function (resolveLoop, rejectLoop) {\n function next(done) {\n if (done) {\n resolveLoop();\n } else {\n PerformPromiseThen(pipeStep(), next, rejectLoop);\n }\n }\n next(false);\n });\n }\n function pipeStep() {\n if (shuttingDown) {\n return promiseResolvedWith(true);\n }\n return PerformPromiseThen(writer._readyPromise, function () {\n return newPromise(function (resolveRead, rejectRead) {\n ReadableStreamDefaultReaderRead(reader, {\n _chunkSteps: function (chunk) {\n currentWrite = PerformPromiseThen(WritableStreamDefaultWriterWrite(writer, chunk), undefined, noop);\n resolveRead(false);\n },\n _closeSteps: function () {\n return resolveRead(true);\n },\n _errorSteps: rejectRead\n });\n });\n });\n }\n isOrBecomesErrored(source, reader._closedPromise, function (storedError) {\n if (!preventAbort) {\n shutdownWithAction(function () {\n return WritableStreamAbort(dest, storedError);\n }, true, storedError);\n } else {\n shutdown(true, storedError);\n }\n });\n isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {\n if (!preventCancel) {\n shutdownWithAction(function () {\n return ReadableStreamCancel(source, storedError);\n }, true, storedError);\n } else {\n shutdown(true, storedError);\n }\n });\n isOrBecomesClosed(source, reader._closedPromise, function () {\n if (!preventClose) {\n shutdownWithAction(function () {\n return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);\n });\n } else {\n shutdown();\n }\n });\n if (WritableStreamCloseQueuedOrInFlight(dest) || dest._state === 'closed') {\n var destClosed_1 = new TypeError('the destination writable stream closed before all data could be piped to it');\n if (!preventCancel) {\n shutdownWithAction(function () {\n return ReadableStreamCancel(source, destClosed_1);\n }, true, destClosed_1);\n } else {\n shutdown(true, destClosed_1);\n }\n }\n setPromiseIsHandledToTrue(pipeLoop());\n function waitForWritesToFinish() {\n var oldCurrentWrite = currentWrite;\n return PerformPromiseThen(currentWrite, function () {\n return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;\n });\n }\n function isOrBecomesErrored(stream, promise, action) {\n if (stream._state === 'errored') {\n action(stream._storedError);\n } else {\n uponRejection(promise, action);\n }\n }\n function isOrBecomesClosed(stream, promise, action) {\n if (stream._state === 'closed') {\n action();\n } else {\n uponFulfillment(promise, action);\n }\n }\n function shutdownWithAction(action, originalIsError, originalError) {\n if (shuttingDown) {\n return;\n }\n shuttingDown = true;\n if (dest._state === 'writable' && !WritableStreamCloseQueuedOrInFlight(dest)) {\n uponFulfillment(waitForWritesToFinish(), doTheRest);\n } else {\n doTheRest();\n }\n function doTheRest() {\n uponPromise(action(), function () {\n return finalize(originalIsError, originalError);\n }, function (newError) {\n return finalize(true, newError);\n });\n }\n }\n function shutdown(isError, error) {\n if (shuttingDown) {\n return;\n }\n shuttingDown = true;\n if (dest._state === 'writable' && !WritableStreamCloseQueuedOrInFlight(dest)) {\n uponFulfillment(waitForWritesToFinish(), function () {\n return finalize(isError, error);\n });\n } else {\n finalize(isError, error);\n }\n }\n function finalize(isError, error) {\n WritableStreamDefaultWriterRelease(writer);\n ReadableStreamReaderGenericRelease(reader);\n if (signal !== undefined) {\n signal.removeEventListener('abort', abortAlgorithm);\n }\n if (isError) {\n reject(error);\n } else {\n resolve(undefined);\n }\n }\n });\n }\n var ReadableStreamDefaultController = (function () {\n function ReadableStreamDefaultController() {\n throw new TypeError('Illegal constructor');\n }\n Object.defineProperty(ReadableStreamDefaultController.prototype, \"desiredSize\", {\n get: function () {\n if (!IsReadableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$1('desiredSize');\n }\n return ReadableStreamDefaultControllerGetDesiredSize(this);\n },\n enumerable: false,\n configurable: true\n });\n ReadableStreamDefaultController.prototype.close = function () {\n if (!IsReadableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$1('close');\n }\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) {\n throw new TypeError('The stream is not in a state that permits close');\n }\n ReadableStreamDefaultControllerClose(this);\n };\n ReadableStreamDefaultController.prototype.enqueue = function (chunk) {\n if (chunk === void 0) {\n chunk = undefined;\n }\n if (!IsReadableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$1('enqueue');\n }\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) {\n throw new TypeError('The stream is not in a state that permits enqueue');\n }\n return ReadableStreamDefaultControllerEnqueue(this, chunk);\n };\n ReadableStreamDefaultController.prototype.error = function (e) {\n if (e === void 0) {\n e = undefined;\n }\n if (!IsReadableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$1('error');\n }\n ReadableStreamDefaultControllerError(this, e);\n };\n ReadableStreamDefaultController.prototype[CancelSteps] = function (reason) {\n ResetQueue(this);\n var result = this._cancelAlgorithm(reason);\n ReadableStreamDefaultControllerClearAlgorithms(this);\n return result;\n };\n ReadableStreamDefaultController.prototype[PullSteps] = function (readRequest) {\n var stream = this._controlledReadableStream;\n if (this._queue.length > 0) {\n var chunk = DequeueValue(this);\n if (this._closeRequested && this._queue.length === 0) {\n ReadableStreamDefaultControllerClearAlgorithms(this);\n ReadableStreamClose(stream);\n } else {\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n }\n readRequest._chunkSteps(chunk);\n } else {\n ReadableStreamAddReadRequest(stream, readRequest);\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n }\n };\n return ReadableStreamDefaultController;\n }());\n Object.defineProperties(ReadableStreamDefaultController.prototype, {\n close: { enumerable: true },\n enqueue: { enumerable: true },\n error: { enumerable: true },\n desiredSize: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStreamDefaultController.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableStreamDefaultController',\n configurable: true\n });\n }\n function IsReadableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableStream')) {\n return false;\n }\n return x instanceof ReadableStreamDefaultController;\n }\n function ReadableStreamDefaultControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n if (!shouldPull) {\n return;\n }\n if (controller._pulling) {\n controller._pullAgain = true;\n return;\n }\n controller._pulling = true;\n var pullPromise = controller._pullAlgorithm();\n uponPromise(pullPromise, function () {\n controller._pulling = false;\n if (controller._pullAgain) {\n controller._pullAgain = false;\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }\n }, function (e) {\n ReadableStreamDefaultControllerError(controller, e);\n });\n }\n function ReadableStreamDefaultControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableStream;\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n return false;\n }\n if (!controller._started) {\n return false;\n }\n if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n if (desiredSize > 0) {\n return true;\n }\n return false;\n }\n function ReadableStreamDefaultControllerClearAlgorithms(controller) {\n controller._pullAlgorithm = undefined;\n controller._cancelAlgorithm = undefined;\n controller._strategySizeAlgorithm = undefined;\n }\n function ReadableStreamDefaultControllerClose(controller) {\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n return;\n }\n var stream = controller._controlledReadableStream;\n controller._closeRequested = true;\n if (controller._queue.length === 0) {\n ReadableStreamDefaultControllerClearAlgorithms(controller);\n ReadableStreamClose(stream);\n }\n }\n function ReadableStreamDefaultControllerEnqueue(controller, chunk) {\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n return;\n }\n var stream = controller._controlledReadableStream;\n if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n ReadableStreamFulfillReadRequest(stream, chunk, false);\n } else {\n var chunkSize = void 0;\n try {\n chunkSize = controller._strategySizeAlgorithm(chunk);\n } catch (chunkSizeE) {\n ReadableStreamDefaultControllerError(controller, chunkSizeE);\n throw chunkSizeE;\n }\n try {\n EnqueueValueWithSize(controller, chunk, chunkSize);\n } catch (enqueueE) {\n ReadableStreamDefaultControllerError(controller, enqueueE);\n throw enqueueE;\n }\n }\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }\n function ReadableStreamDefaultControllerError(controller, e) {\n var stream = controller._controlledReadableStream;\n if (stream._state !== 'readable') {\n return;\n }\n ResetQueue(controller);\n ReadableStreamDefaultControllerClearAlgorithms(controller);\n ReadableStreamError(stream, e);\n }\n function ReadableStreamDefaultControllerGetDesiredSize(controller) {\n var state = controller._controlledReadableStream._state;\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return controller._strategyHWM - controller._queueTotalSize;\n }\n function ReadableStreamDefaultControllerHasBackpressure(controller) {\n if (ReadableStreamDefaultControllerShouldCallPull(controller)) {\n return false;\n }\n return true;\n }\n function ReadableStreamDefaultControllerCanCloseOrEnqueue(controller) {\n var state = controller._controlledReadableStream._state;\n if (!controller._closeRequested && state === 'readable') {\n return true;\n }\n return false;\n }\n function SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) {\n controller._controlledReadableStream = stream;\n controller._queue = undefined;\n controller._queueTotalSize = undefined;\n ResetQueue(controller);\n controller._started = false;\n controller._closeRequested = false;\n controller._pullAgain = false;\n controller._pulling = false;\n controller._strategySizeAlgorithm = sizeAlgorithm;\n controller._strategyHWM = highWaterMark;\n controller._pullAlgorithm = pullAlgorithm;\n controller._cancelAlgorithm = cancelAlgorithm;\n stream._readableStreamController = controller;\n var startResult = startAlgorithm();\n uponPromise(promiseResolvedWith(startResult), function () {\n controller._started = true;\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }, function (r) {\n ReadableStreamDefaultControllerError(controller, r);\n });\n }\n function SetUpReadableStreamDefaultControllerFromUnderlyingSource(stream, underlyingSource, highWaterMark, sizeAlgorithm) {\n var controller = Object.create(ReadableStreamDefaultController.prototype);\n var startAlgorithm = function () {\n return undefined;\n };\n var pullAlgorithm = function () {\n return promiseResolvedWith(undefined);\n };\n var cancelAlgorithm = function () {\n return promiseResolvedWith(undefined);\n };\n if (underlyingSource.start !== undefined) {\n startAlgorithm = function () {\n return underlyingSource.start(controller);\n };\n }\n if (underlyingSource.pull !== undefined) {\n pullAlgorithm = function () {\n return underlyingSource.pull(controller);\n };\n }\n if (underlyingSource.cancel !== undefined) {\n cancelAlgorithm = function (reason) {\n return underlyingSource.cancel(reason);\n };\n }\n SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm);\n }\n function defaultControllerBrandCheckException$1(name) {\n return new TypeError(\"ReadableStreamDefaultController.prototype.\" + name + \" can only be used on a ReadableStreamDefaultController\");\n }\n function ReadableStreamTee(stream, cloneForBranch2) {\n if (IsReadableByteStreamController(stream._readableStreamController)) {\n return ReadableByteStreamTee(stream);\n }\n return ReadableStreamDefaultTee(stream);\n }\n function ReadableStreamDefaultTee(stream, cloneForBranch2) {\n var reader = AcquireReadableStreamDefaultReader(stream);\n var reading = false;\n var readAgain = false;\n var canceled1 = false;\n var canceled2 = false;\n var reason1;\n var reason2;\n var branch1;\n var branch2;\n var resolveCancelPromise;\n var cancelPromise = newPromise(function (resolve) {\n resolveCancelPromise = resolve;\n });\n function pullAlgorithm() {\n if (reading) {\n readAgain = true;\n return promiseResolvedWith(undefined);\n }\n reading = true;\n var readRequest = {\n _chunkSteps: function (chunk) {\n queueMicrotask(function () {\n readAgain = false;\n var chunk1 = chunk;\n var chunk2 = chunk;\n if (!canceled1) {\n ReadableStreamDefaultControllerEnqueue(branch1._readableStreamController, chunk1);\n }\n if (!canceled2) {\n ReadableStreamDefaultControllerEnqueue(branch2._readableStreamController, chunk2);\n }\n reading = false;\n if (readAgain) {\n pullAlgorithm();\n }\n });\n },\n _closeSteps: function () {\n reading = false;\n if (!canceled1) {\n ReadableStreamDefaultControllerClose(branch1._readableStreamController);\n }\n if (!canceled2) {\n ReadableStreamDefaultControllerClose(branch2._readableStreamController);\n }\n if (!canceled1 || !canceled2) {\n resolveCancelPromise(undefined);\n }\n },\n _errorSteps: function () {\n reading = false;\n }\n };\n ReadableStreamDefaultReaderRead(reader, readRequest);\n return promiseResolvedWith(undefined);\n }\n function cancel1Algorithm(reason) {\n canceled1 = true;\n reason1 = reason;\n if (canceled2) {\n var compositeReason = CreateArrayFromList([\n reason1,\n reason2\n ]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n resolveCancelPromise(cancelResult);\n }\n return cancelPromise;\n }\n function cancel2Algorithm(reason) {\n canceled2 = true;\n reason2 = reason;\n if (canceled1) {\n var compositeReason = CreateArrayFromList([\n reason1,\n reason2\n ]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n resolveCancelPromise(cancelResult);\n }\n return cancelPromise;\n }\n function startAlgorithm() {\n }\n branch1 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel1Algorithm);\n branch2 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel2Algorithm);\n uponRejection(reader._closedPromise, function (r) {\n ReadableStreamDefaultControllerError(branch1._readableStreamController, r);\n ReadableStreamDefaultControllerError(branch2._readableStreamController, r);\n if (!canceled1 || !canceled2) {\n resolveCancelPromise(undefined);\n }\n });\n return [\n branch1,\n branch2\n ];\n }\n function ReadableByteStreamTee(stream) {\n var reader = AcquireReadableStreamDefaultReader(stream);\n var reading = false;\n var readAgainForBranch1 = false;\n var readAgainForBranch2 = false;\n var canceled1 = false;\n var canceled2 = false;\n var reason1;\n var reason2;\n var branch1;\n var branch2;\n var resolveCancelPromise;\n var cancelPromise = newPromise(function (resolve) {\n resolveCancelPromise = resolve;\n });\n function forwardReaderError(thisReader) {\n uponRejection(thisReader._closedPromise, function (r) {\n if (thisReader !== reader) {\n return;\n }\n ReadableByteStreamControllerError(branch1._readableStreamController, r);\n ReadableByteStreamControllerError(branch2._readableStreamController, r);\n if (!canceled1 || !canceled2) {\n resolveCancelPromise(undefined);\n }\n });\n }\n function pullWithDefaultReader() {\n if (IsReadableStreamBYOBReader(reader)) {\n ReadableStreamReaderGenericRelease(reader);\n reader = AcquireReadableStreamDefaultReader(stream);\n forwardReaderError(reader);\n }\n var readRequest = {\n _chunkSteps: function (chunk) {\n queueMicrotask(function () {\n readAgainForBranch1 = false;\n readAgainForBranch2 = false;\n var chunk1 = chunk;\n var chunk2 = chunk;\n if (!canceled1 && !canceled2) {\n try {\n chunk2 = CloneAsUint8Array(chunk);\n } catch (cloneE) {\n ReadableByteStreamControllerError(branch1._readableStreamController, cloneE);\n ReadableByteStreamControllerError(branch2._readableStreamController, cloneE);\n resolveCancelPromise(ReadableStreamCancel(stream, cloneE));\n return;\n }\n }\n if (!canceled1) {\n ReadableByteStreamControllerEnqueue(branch1._readableStreamController, chunk1);\n }\n if (!canceled2) {\n ReadableByteStreamControllerEnqueue(branch2._readableStreamController, chunk2);\n }\n reading = false;\n if (readAgainForBranch1) {\n pull1Algorithm();\n } else if (readAgainForBranch2) {\n pull2Algorithm();\n }\n });\n },\n _closeSteps: function () {\n reading = false;\n if (!canceled1) {\n ReadableByteStreamControllerClose(branch1._readableStreamController);\n }\n if (!canceled2) {\n ReadableByteStreamControllerClose(branch2._readableStreamController);\n }\n if (branch1._readableStreamController._pendingPullIntos.length > 0) {\n ReadableByteStreamControllerRespond(branch1._readableStreamController, 0);\n }\n if (branch2._readableStreamController._pendingPullIntos.length > 0) {\n ReadableByteStreamControllerRespond(branch2._readableStreamController, 0);\n }\n if (!canceled1 || !canceled2) {\n resolveCancelPromise(undefined);\n }\n },\n _errorSteps: function () {\n reading = false;\n }\n };\n ReadableStreamDefaultReaderRead(reader, readRequest);\n }\n function pullWithBYOBReader(view, forBranch2) {\n if (IsReadableStreamDefaultReader(reader)) {\n ReadableStreamReaderGenericRelease(reader);\n reader = AcquireReadableStreamBYOBReader(stream);\n forwardReaderError(reader);\n }\n var byobBranch = forBranch2 ? branch2 : branch1;\n var otherBranch = forBranch2 ? branch1 : branch2;\n var readIntoRequest = {\n _chunkSteps: function (chunk) {\n queueMicrotask(function () {\n readAgainForBranch1 = false;\n readAgainForBranch2 = false;\n var byobCanceled = forBranch2 ? canceled2 : canceled1;\n var otherCanceled = forBranch2 ? canceled1 : canceled2;\n if (!otherCanceled) {\n var clonedChunk = void 0;\n try {\n clonedChunk = CloneAsUint8Array(chunk);\n } catch (cloneE) {\n ReadableByteStreamControllerError(byobBranch._readableStreamController, cloneE);\n ReadableByteStreamControllerError(otherBranch._readableStreamController, cloneE);\n resolveCancelPromise(ReadableStreamCancel(stream, cloneE));\n return;\n }\n if (!byobCanceled) {\n ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk);\n }\n ReadableByteStreamControllerEnqueue(otherBranch._readableStreamController, clonedChunk);\n } else if (!byobCanceled) {\n ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk);\n }\n reading = false;\n if (readAgainForBranch1) {\n pull1Algorithm();\n } else if (readAgainForBranch2) {\n pull2Algorithm();\n }\n });\n },\n _closeSteps: function (chunk) {\n reading = false;\n var byobCanceled = forBranch2 ? canceled2 : canceled1;\n var otherCanceled = forBranch2 ? canceled1 : canceled2;\n if (!byobCanceled) {\n ReadableByteStreamControllerClose(byobBranch._readableStreamController);\n }\n if (!otherCanceled) {\n ReadableByteStreamControllerClose(otherBranch._readableStreamController);\n }\n if (chunk !== undefined) {\n if (!byobCanceled) {\n ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk);\n }\n if (!otherCanceled && otherBranch._readableStreamController._pendingPullIntos.length > 0) {\n ReadableByteStreamControllerRespond(otherBranch._readableStreamController, 0);\n }\n }\n if (!byobCanceled || !otherCanceled) {\n resolveCancelPromise(undefined);\n }\n },\n _errorSteps: function () {\n reading = false;\n }\n };\n ReadableStreamBYOBReaderRead(reader, view, readIntoRequest);\n }\n function pull1Algorithm() {\n if (reading) {\n readAgainForBranch1 = true;\n return promiseResolvedWith(undefined);\n }\n reading = true;\n var byobRequest = ReadableByteStreamControllerGetBYOBRequest(branch1._readableStreamController);\n if (byobRequest === null) {\n pullWithDefaultReader();\n } else {\n pullWithBYOBReader(byobRequest._view, false);\n }\n return promiseResolvedWith(undefined);\n }\n function pull2Algorithm() {\n if (reading) {\n readAgainForBranch2 = true;\n return promiseResolvedWith(undefined);\n }\n reading = true;\n var byobRequest = ReadableByteStreamControllerGetBYOBRequest(branch2._readableStreamController);\n if (byobRequest === null) {\n pullWithDefaultReader();\n } else {\n pullWithBYOBReader(byobRequest._view, true);\n }\n return promiseResolvedWith(undefined);\n }\n function cancel1Algorithm(reason) {\n canceled1 = true;\n reason1 = reason;\n if (canceled2) {\n var compositeReason = CreateArrayFromList([\n reason1,\n reason2\n ]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n resolveCancelPromise(cancelResult);\n }\n return cancelPromise;\n }\n function cancel2Algorithm(reason) {\n canceled2 = true;\n reason2 = reason;\n if (canceled1) {\n var compositeReason = CreateArrayFromList([\n reason1,\n reason2\n ]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n resolveCancelPromise(cancelResult);\n }\n return cancelPromise;\n }\n function startAlgorithm() {\n }\n branch1 = CreateReadableByteStream(startAlgorithm, pull1Algorithm, cancel1Algorithm);\n branch2 = CreateReadableByteStream(startAlgorithm, pull2Algorithm, cancel2Algorithm);\n forwardReaderError(reader);\n return [\n branch1,\n branch2\n ];\n }\n function convertUnderlyingDefaultOrByteSource(source, context) {\n assertDictionary(source, context);\n var original = source;\n var autoAllocateChunkSize = original === null || original === void 0 ? void 0 : original.autoAllocateChunkSize;\n var cancel = original === null || original === void 0 ? void 0 : original.cancel;\n var pull = original === null || original === void 0 ? void 0 : original.pull;\n var start = original === null || original === void 0 ? void 0 : original.start;\n var type = original === null || original === void 0 ? void 0 : original.type;\n return {\n autoAllocateChunkSize: autoAllocateChunkSize === undefined ? undefined : convertUnsignedLongLongWithEnforceRange(autoAllocateChunkSize, context + \" has member 'autoAllocateChunkSize' that\"),\n cancel: cancel === undefined ? undefined : convertUnderlyingSourceCancelCallback(cancel, original, context + \" has member 'cancel' that\"),\n pull: pull === undefined ? undefined : convertUnderlyingSourcePullCallback(pull, original, context + \" has member 'pull' that\"),\n start: start === undefined ? undefined : convertUnderlyingSourceStartCallback(start, original, context + \" has member 'start' that\"),\n type: type === undefined ? undefined : convertReadableStreamType(type, context + \" has member 'type' that\")\n };\n }\n function convertUnderlyingSourceCancelCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (reason) {\n return promiseCall(fn, original, [reason]);\n };\n }\n function convertUnderlyingSourcePullCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (controller) {\n return promiseCall(fn, original, [controller]);\n };\n }\n function convertUnderlyingSourceStartCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (controller) {\n return reflectCall(fn, original, [controller]);\n };\n }\n function convertReadableStreamType(type, context) {\n type = \"\" + type;\n if (type !== 'bytes') {\n throw new TypeError(context + \" '\" + type + \"' is not a valid enumeration value for ReadableStreamType\");\n }\n return type;\n }\n function convertReaderOptions(options, context) {\n assertDictionary(options, context);\n var mode = options === null || options === void 0 ? void 0 : options.mode;\n return { mode: mode === undefined ? undefined : convertReadableStreamReaderMode(mode, context + \" has member 'mode' that\") };\n }\n function convertReadableStreamReaderMode(mode, context) {\n mode = \"\" + mode;\n if (mode !== 'byob') {\n throw new TypeError(context + \" '\" + mode + \"' is not a valid enumeration value for ReadableStreamReaderMode\");\n }\n return mode;\n }\n function convertIteratorOptions(options, context) {\n assertDictionary(options, context);\n var preventCancel = options === null || options === void 0 ? void 0 : options.preventCancel;\n return { preventCancel: Boolean(preventCancel) };\n }\n function convertPipeOptions(options, context) {\n assertDictionary(options, context);\n var preventAbort = options === null || options === void 0 ? void 0 : options.preventAbort;\n var preventCancel = options === null || options === void 0 ? void 0 : options.preventCancel;\n var preventClose = options === null || options === void 0 ? void 0 : options.preventClose;\n var signal = options === null || options === void 0 ? void 0 : options.signal;\n if (signal !== undefined) {\n assertAbortSignal(signal, context + \" has member 'signal' that\");\n }\n return {\n preventAbort: Boolean(preventAbort),\n preventCancel: Boolean(preventCancel),\n preventClose: Boolean(preventClose),\n signal: signal\n };\n }\n function assertAbortSignal(signal, context) {\n if (!isAbortSignal(signal)) {\n throw new TypeError(context + \" is not an AbortSignal.\");\n }\n }\n function convertReadableWritablePair(pair, context) {\n assertDictionary(pair, context);\n var readable = pair === null || pair === void 0 ? void 0 : pair.readable;\n assertRequiredField(readable, 'readable', 'ReadableWritablePair');\n assertReadableStream(readable, context + \" has member 'readable' that\");\n var writable = pair === null || pair === void 0 ? void 0 : pair.writable;\n assertRequiredField(writable, 'writable', 'ReadableWritablePair');\n assertWritableStream(writable, context + \" has member 'writable' that\");\n return {\n readable: readable,\n writable: writable\n };\n }\n var ReadableStream = (function () {\n function ReadableStream(rawUnderlyingSource, rawStrategy) {\n if (rawUnderlyingSource === void 0) {\n rawUnderlyingSource = {};\n }\n if (rawStrategy === void 0) {\n rawStrategy = {};\n }\n if (rawUnderlyingSource === undefined) {\n rawUnderlyingSource = null;\n } else {\n assertObject(rawUnderlyingSource, 'First parameter');\n }\n var strategy = convertQueuingStrategy(rawStrategy, 'Second parameter');\n var underlyingSource = convertUnderlyingDefaultOrByteSource(rawUnderlyingSource, 'First parameter');\n InitializeReadableStream(this);\n if (underlyingSource.type === 'bytes') {\n if (strategy.size !== undefined) {\n throw new RangeError('The strategy for a byte stream cannot have a size function');\n }\n var highWaterMark = ExtractHighWaterMark(strategy, 0);\n SetUpReadableByteStreamControllerFromUnderlyingSource(this, underlyingSource, highWaterMark);\n } else {\n var sizeAlgorithm = ExtractSizeAlgorithm(strategy);\n var highWaterMark = ExtractHighWaterMark(strategy, 1);\n SetUpReadableStreamDefaultControllerFromUnderlyingSource(this, underlyingSource, highWaterMark, sizeAlgorithm);\n }\n }\n Object.defineProperty(ReadableStream.prototype, \"locked\", {\n get: function () {\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('locked');\n }\n return IsReadableStreamLocked(this);\n },\n enumerable: false,\n configurable: true\n });\n ReadableStream.prototype.cancel = function (reason) {\n if (reason === void 0) {\n reason = undefined;\n }\n if (!IsReadableStream(this)) {\n return promiseRejectedWith(streamBrandCheckException$1('cancel'));\n }\n if (IsReadableStreamLocked(this)) {\n return promiseRejectedWith(new TypeError('Cannot cancel a stream that already has a reader'));\n }\n return ReadableStreamCancel(this, reason);\n };\n ReadableStream.prototype.getReader = function (rawOptions) {\n if (rawOptions === void 0) {\n rawOptions = undefined;\n }\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('getReader');\n }\n var options = convertReaderOptions(rawOptions, 'First parameter');\n if (options.mode === undefined) {\n return AcquireReadableStreamDefaultReader(this);\n }\n return AcquireReadableStreamBYOBReader(this);\n };\n ReadableStream.prototype.pipeThrough = function (rawTransform, rawOptions) {\n if (rawOptions === void 0) {\n rawOptions = {};\n }\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('pipeThrough');\n }\n assertRequiredArgument(rawTransform, 1, 'pipeThrough');\n var transform = convertReadableWritablePair(rawTransform, 'First parameter');\n var options = convertPipeOptions(rawOptions, 'Second parameter');\n if (IsReadableStreamLocked(this)) {\n throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream');\n }\n if (IsWritableStreamLocked(transform.writable)) {\n throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream');\n }\n var promise = ReadableStreamPipeTo(this, transform.writable, options.preventClose, options.preventAbort, options.preventCancel, options.signal);\n setPromiseIsHandledToTrue(promise);\n return transform.readable;\n };\n ReadableStream.prototype.pipeTo = function (destination, rawOptions) {\n if (rawOptions === void 0) {\n rawOptions = {};\n }\n if (!IsReadableStream(this)) {\n return promiseRejectedWith(streamBrandCheckException$1('pipeTo'));\n }\n if (destination === undefined) {\n return promiseRejectedWith(\"Parameter 1 is required in 'pipeTo'.\");\n }\n if (!IsWritableStream(destination)) {\n return promiseRejectedWith(new TypeError(\"ReadableStream.prototype.pipeTo's first argument must be a WritableStream\"));\n }\n var options;\n try {\n options = convertPipeOptions(rawOptions, 'Second parameter');\n } catch (e) {\n return promiseRejectedWith(e);\n }\n if (IsReadableStreamLocked(this)) {\n return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));\n }\n if (IsWritableStreamLocked(destination)) {\n return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));\n }\n return ReadableStreamPipeTo(this, destination, options.preventClose, options.preventAbort, options.preventCancel, options.signal);\n };\n ReadableStream.prototype.tee = function () {\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('tee');\n }\n var branches = ReadableStreamTee(this);\n return CreateArrayFromList(branches);\n };\n ReadableStream.prototype.values = function (rawOptions) {\n if (rawOptions === void 0) {\n rawOptions = undefined;\n }\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('values');\n }\n var options = convertIteratorOptions(rawOptions, 'First parameter');\n return AcquireReadableStreamAsyncIterator(this, options.preventCancel);\n };\n return ReadableStream;\n }());\n Object.defineProperties(ReadableStream.prototype, {\n cancel: { enumerable: true },\n getReader: { enumerable: true },\n pipeThrough: { enumerable: true },\n pipeTo: { enumerable: true },\n tee: { enumerable: true },\n values: { enumerable: true },\n locked: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStream.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableStream',\n configurable: true\n });\n }\n if (typeof SymbolPolyfill.asyncIterator === 'symbol') {\n Object.defineProperty(ReadableStream.prototype, SymbolPolyfill.asyncIterator, {\n value: ReadableStream.prototype.values,\n writable: true,\n configurable: true\n });\n }\n function CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) {\n if (highWaterMark === void 0) {\n highWaterMark = 1;\n }\n if (sizeAlgorithm === void 0) {\n sizeAlgorithm = function () {\n return 1;\n };\n }\n var stream = Object.create(ReadableStream.prototype);\n InitializeReadableStream(stream);\n var controller = Object.create(ReadableStreamDefaultController.prototype);\n SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm);\n return stream;\n }\n function CreateReadableByteStream(startAlgorithm, pullAlgorithm, cancelAlgorithm) {\n var stream = Object.create(ReadableStream.prototype);\n InitializeReadableStream(stream);\n var controller = Object.create(ReadableByteStreamController.prototype);\n SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, 0, undefined);\n return stream;\n }\n function InitializeReadableStream(stream) {\n stream._state = 'readable';\n stream._reader = undefined;\n stream._storedError = undefined;\n stream._disturbed = false;\n }\n function IsReadableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n return false;\n }\n return x instanceof ReadableStream;\n }\n function IsReadableStreamLocked(stream) {\n if (stream._reader === undefined) {\n return false;\n }\n return true;\n }\n function ReadableStreamCancel(stream, reason) {\n stream._disturbed = true;\n if (stream._state === 'closed') {\n return promiseResolvedWith(undefined);\n }\n if (stream._state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n ReadableStreamClose(stream);\n var reader = stream._reader;\n if (reader !== undefined && IsReadableStreamBYOBReader(reader)) {\n reader._readIntoRequests.forEach(function (readIntoRequest) {\n readIntoRequest._closeSteps(undefined);\n });\n reader._readIntoRequests = new SimpleQueue();\n }\n var sourceCancelPromise = stream._readableStreamController[CancelSteps](reason);\n return transformPromiseWith(sourceCancelPromise, noop);\n }\n function ReadableStreamClose(stream) {\n stream._state = 'closed';\n var reader = stream._reader;\n if (reader === undefined) {\n return;\n }\n defaultReaderClosedPromiseResolve(reader);\n if (IsReadableStreamDefaultReader(reader)) {\n reader._readRequests.forEach(function (readRequest) {\n readRequest._closeSteps();\n });\n reader._readRequests = new SimpleQueue();\n }\n }\n function ReadableStreamError(stream, e) {\n stream._state = 'errored';\n stream._storedError = e;\n var reader = stream._reader;\n if (reader === undefined) {\n return;\n }\n defaultReaderClosedPromiseReject(reader, e);\n if (IsReadableStreamDefaultReader(reader)) {\n reader._readRequests.forEach(function (readRequest) {\n readRequest._errorSteps(e);\n });\n reader._readRequests = new SimpleQueue();\n } else {\n reader._readIntoRequests.forEach(function (readIntoRequest) {\n readIntoRequest._errorSteps(e);\n });\n reader._readIntoRequests = new SimpleQueue();\n }\n }\n function streamBrandCheckException$1(name) {\n return new TypeError(\"ReadableStream.prototype.\" + name + \" can only be used on a ReadableStream\");\n }\n function convertQueuingStrategyInit(init, context) {\n assertDictionary(init, context);\n var highWaterMark = init === null || init === void 0 ? void 0 : init.highWaterMark;\n assertRequiredField(highWaterMark, 'highWaterMark', 'QueuingStrategyInit');\n return { highWaterMark: convertUnrestrictedDouble(highWaterMark) };\n }\n var byteLengthSizeFunction = function (chunk) {\n return chunk.byteLength;\n };\n Object.defineProperty(byteLengthSizeFunction, 'name', {\n value: 'size',\n configurable: true\n });\n var ByteLengthQueuingStrategy = (function () {\n function ByteLengthQueuingStrategy(options) {\n assertRequiredArgument(options, 1, 'ByteLengthQueuingStrategy');\n options = convertQueuingStrategyInit(options, 'First parameter');\n this._byteLengthQueuingStrategyHighWaterMark = options.highWaterMark;\n }\n Object.defineProperty(ByteLengthQueuingStrategy.prototype, \"highWaterMark\", {\n get: function () {\n if (!IsByteLengthQueuingStrategy(this)) {\n throw byteLengthBrandCheckException('highWaterMark');\n }\n return this._byteLengthQueuingStrategyHighWaterMark;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ByteLengthQueuingStrategy.prototype, \"size\", {\n get: function () {\n if (!IsByteLengthQueuingStrategy(this)) {\n throw byteLengthBrandCheckException('size');\n }\n return byteLengthSizeFunction;\n },\n enumerable: false,\n configurable: true\n });\n return ByteLengthQueuingStrategy;\n }());\n Object.defineProperties(ByteLengthQueuingStrategy.prototype, {\n highWaterMark: { enumerable: true },\n size: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ByteLengthQueuingStrategy.prototype, SymbolPolyfill.toStringTag, {\n value: 'ByteLengthQueuingStrategy',\n configurable: true\n });\n }\n function byteLengthBrandCheckException(name) {\n return new TypeError(\"ByteLengthQueuingStrategy.prototype.\" + name + \" can only be used on a ByteLengthQueuingStrategy\");\n }\n function IsByteLengthQueuingStrategy(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_byteLengthQueuingStrategyHighWaterMark')) {\n return false;\n }\n return x instanceof ByteLengthQueuingStrategy;\n }\n var countSizeFunction = function () {\n return 1;\n };\n Object.defineProperty(countSizeFunction, 'name', {\n value: 'size',\n configurable: true\n });\n var CountQueuingStrategy = (function () {\n function CountQueuingStrategy(options) {\n assertRequiredArgument(options, 1, 'CountQueuingStrategy');\n options = convertQueuingStrategyInit(options, 'First parameter');\n this._countQueuingStrategyHighWaterMark = options.highWaterMark;\n }\n Object.defineProperty(CountQueuingStrategy.prototype, \"highWaterMark\", {\n get: function () {\n if (!IsCountQueuingStrategy(this)) {\n throw countBrandCheckException('highWaterMark');\n }\n return this._countQueuingStrategyHighWaterMark;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CountQueuingStrategy.prototype, \"size\", {\n get: function () {\n if (!IsCountQueuingStrategy(this)) {\n throw countBrandCheckException('size');\n }\n return countSizeFunction;\n },\n enumerable: false,\n configurable: true\n });\n return CountQueuingStrategy;\n }());\n Object.defineProperties(CountQueuingStrategy.prototype, {\n highWaterMark: { enumerable: true },\n size: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(CountQueuingStrategy.prototype, SymbolPolyfill.toStringTag, {\n value: 'CountQueuingStrategy',\n configurable: true\n });\n }\n function countBrandCheckException(name) {\n return new TypeError(\"CountQueuingStrategy.prototype.\" + name + \" can only be used on a CountQueuingStrategy\");\n }\n function IsCountQueuingStrategy(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_countQueuingStrategyHighWaterMark')) {\n return false;\n }\n return x instanceof CountQueuingStrategy;\n }\n function convertTransformer(original, context) {\n assertDictionary(original, context);\n var flush = original === null || original === void 0 ? void 0 : original.flush;\n var readableType = original === null || original === void 0 ? void 0 : original.readableType;\n var start = original === null || original === void 0 ? void 0 : original.start;\n var transform = original === null || original === void 0 ? void 0 : original.transform;\n var writableType = original === null || original === void 0 ? void 0 : original.writableType;\n return {\n flush: flush === undefined ? undefined : convertTransformerFlushCallback(flush, original, context + \" has member 'flush' that\"),\n readableType: readableType,\n start: start === undefined ? undefined : convertTransformerStartCallback(start, original, context + \" has member 'start' that\"),\n transform: transform === undefined ? undefined : convertTransformerTransformCallback(transform, original, context + \" has member 'transform' that\"),\n writableType: writableType\n };\n }\n function convertTransformerFlushCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (controller) {\n return promiseCall(fn, original, [controller]);\n };\n }\n function convertTransformerStartCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (controller) {\n return reflectCall(fn, original, [controller]);\n };\n }\n function convertTransformerTransformCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (chunk, controller) {\n return promiseCall(fn, original, [\n chunk,\n controller\n ]);\n };\n }\n var TransformStream = (function () {\n function TransformStream(rawTransformer, rawWritableStrategy, rawReadableStrategy) {\n if (rawTransformer === void 0) {\n rawTransformer = {};\n }\n if (rawWritableStrategy === void 0) {\n rawWritableStrategy = {};\n }\n if (rawReadableStrategy === void 0) {\n rawReadableStrategy = {};\n }\n if (rawTransformer === undefined) {\n rawTransformer = null;\n }\n var writableStrategy = convertQueuingStrategy(rawWritableStrategy, 'Second parameter');\n var readableStrategy = convertQueuingStrategy(rawReadableStrategy, 'Third parameter');\n var transformer = convertTransformer(rawTransformer, 'First parameter');\n if (transformer.readableType !== undefined) {\n throw new RangeError('Invalid readableType specified');\n }\n if (transformer.writableType !== undefined) {\n throw new RangeError('Invalid writableType specified');\n }\n var readableHighWaterMark = ExtractHighWaterMark(readableStrategy, 0);\n var readableSizeAlgorithm = ExtractSizeAlgorithm(readableStrategy);\n var writableHighWaterMark = ExtractHighWaterMark(writableStrategy, 1);\n var writableSizeAlgorithm = ExtractSizeAlgorithm(writableStrategy);\n var startPromise_resolve;\n var startPromise = newPromise(function (resolve) {\n startPromise_resolve = resolve;\n });\n InitializeTransformStream(this, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm);\n SetUpTransformStreamDefaultControllerFromTransformer(this, transformer);\n if (transformer.start !== undefined) {\n startPromise_resolve(transformer.start(this._transformStreamController));\n } else {\n startPromise_resolve(undefined);\n }\n }\n Object.defineProperty(TransformStream.prototype, \"readable\", {\n get: function () {\n if (!IsTransformStream(this)) {\n throw streamBrandCheckException('readable');\n }\n return this._readable;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TransformStream.prototype, \"writable\", {\n get: function () {\n if (!IsTransformStream(this)) {\n throw streamBrandCheckException('writable');\n }\n return this._writable;\n },\n enumerable: false,\n configurable: true\n });\n return TransformStream;\n }());\n Object.defineProperties(TransformStream.prototype, {\n readable: { enumerable: true },\n writable: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(TransformStream.prototype, SymbolPolyfill.toStringTag, {\n value: 'TransformStream',\n configurable: true\n });\n }\n function InitializeTransformStream(stream, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm) {\n function startAlgorithm() {\n return startPromise;\n }\n function writeAlgorithm(chunk) {\n return TransformStreamDefaultSinkWriteAlgorithm(stream, chunk);\n }\n function abortAlgorithm(reason) {\n return TransformStreamDefaultSinkAbortAlgorithm(stream, reason);\n }\n function closeAlgorithm() {\n return TransformStreamDefaultSinkCloseAlgorithm(stream);\n }\n stream._writable = CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, writableHighWaterMark, writableSizeAlgorithm);\n function pullAlgorithm() {\n return TransformStreamDefaultSourcePullAlgorithm(stream);\n }\n function cancelAlgorithm(reason) {\n TransformStreamErrorWritableAndUnblockWrite(stream, reason);\n return promiseResolvedWith(undefined);\n }\n stream._readable = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, readableHighWaterMark, readableSizeAlgorithm);\n stream._backpressure = undefined;\n stream._backpressureChangePromise = undefined;\n stream._backpressureChangePromise_resolve = undefined;\n TransformStreamSetBackpressure(stream, true);\n stream._transformStreamController = undefined;\n }\n function IsTransformStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n return false;\n }\n return x instanceof TransformStream;\n }\n function TransformStreamError(stream, e) {\n ReadableStreamDefaultControllerError(stream._readable._readableStreamController, e);\n TransformStreamErrorWritableAndUnblockWrite(stream, e);\n }\n function TransformStreamErrorWritableAndUnblockWrite(stream, e) {\n TransformStreamDefaultControllerClearAlgorithms(stream._transformStreamController);\n WritableStreamDefaultControllerErrorIfNeeded(stream._writable._writableStreamController, e);\n if (stream._backpressure) {\n TransformStreamSetBackpressure(stream, false);\n }\n }\n function TransformStreamSetBackpressure(stream, backpressure) {\n if (stream._backpressureChangePromise !== undefined) {\n stream._backpressureChangePromise_resolve();\n }\n stream._backpressureChangePromise = newPromise(function (resolve) {\n stream._backpressureChangePromise_resolve = resolve;\n });\n stream._backpressure = backpressure;\n }\n var TransformStreamDefaultController = (function () {\n function TransformStreamDefaultController() {\n throw new TypeError('Illegal constructor');\n }\n Object.defineProperty(TransformStreamDefaultController.prototype, \"desiredSize\", {\n get: function () {\n if (!IsTransformStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException('desiredSize');\n }\n var readableController = this._controlledTransformStream._readable._readableStreamController;\n return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n },\n enumerable: false,\n configurable: true\n });\n TransformStreamDefaultController.prototype.enqueue = function (chunk) {\n if (chunk === void 0) {\n chunk = undefined;\n }\n if (!IsTransformStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException('enqueue');\n }\n TransformStreamDefaultControllerEnqueue(this, chunk);\n };\n TransformStreamDefaultController.prototype.error = function (reason) {\n if (reason === void 0) {\n reason = undefined;\n }\n if (!IsTransformStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException('error');\n }\n TransformStreamDefaultControllerError(this, reason);\n };\n TransformStreamDefaultController.prototype.terminate = function () {\n if (!IsTransformStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException('terminate');\n }\n TransformStreamDefaultControllerTerminate(this);\n };\n return TransformStreamDefaultController;\n }());\n Object.defineProperties(TransformStreamDefaultController.prototype, {\n enqueue: { enumerable: true },\n error: { enumerable: true },\n terminate: { enumerable: true },\n desiredSize: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(TransformStreamDefaultController.prototype, SymbolPolyfill.toStringTag, {\n value: 'TransformStreamDefaultController',\n configurable: true\n });\n }\n function IsTransformStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n return false;\n }\n return x instanceof TransformStreamDefaultController;\n }\n function SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm) {\n controller._controlledTransformStream = stream;\n stream._transformStreamController = controller;\n controller._transformAlgorithm = transformAlgorithm;\n controller._flushAlgorithm = flushAlgorithm;\n }\n function SetUpTransformStreamDefaultControllerFromTransformer(stream, transformer) {\n var controller = Object.create(TransformStreamDefaultController.prototype);\n var transformAlgorithm = function (chunk) {\n try {\n TransformStreamDefaultControllerEnqueue(controller, chunk);\n return promiseResolvedWith(undefined);\n } catch (transformResultE) {\n return promiseRejectedWith(transformResultE);\n }\n };\n var flushAlgorithm = function () {\n return promiseResolvedWith(undefined);\n };\n if (transformer.transform !== undefined) {\n transformAlgorithm = function (chunk) {\n return transformer.transform(chunk, controller);\n };\n }\n if (transformer.flush !== undefined) {\n flushAlgorithm = function () {\n return transformer.flush(controller);\n };\n }\n SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm);\n }\n function TransformStreamDefaultControllerClearAlgorithms(controller) {\n controller._transformAlgorithm = undefined;\n controller._flushAlgorithm = undefined;\n }\n function TransformStreamDefaultControllerEnqueue(controller, chunk) {\n var stream = controller._controlledTransformStream;\n var readableController = stream._readable._readableStreamController;\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController)) {\n throw new TypeError('Readable side is not in a state that permits enqueue');\n }\n try {\n ReadableStreamDefaultControllerEnqueue(readableController, chunk);\n } catch (e) {\n TransformStreamErrorWritableAndUnblockWrite(stream, e);\n throw stream._readable._storedError;\n }\n var backpressure = ReadableStreamDefaultControllerHasBackpressure(readableController);\n if (backpressure !== stream._backpressure) {\n TransformStreamSetBackpressure(stream, true);\n }\n }\n function TransformStreamDefaultControllerError(controller, e) {\n TransformStreamError(controller._controlledTransformStream, e);\n }\n function TransformStreamDefaultControllerPerformTransform(controller, chunk) {\n var transformPromise = controller._transformAlgorithm(chunk);\n return transformPromiseWith(transformPromise, undefined, function (r) {\n TransformStreamError(controller._controlledTransformStream, r);\n throw r;\n });\n }\n function TransformStreamDefaultControllerTerminate(controller) {\n var stream = controller._controlledTransformStream;\n var readableController = stream._readable._readableStreamController;\n ReadableStreamDefaultControllerClose(readableController);\n var error = new TypeError('TransformStream terminated');\n TransformStreamErrorWritableAndUnblockWrite(stream, error);\n }\n function TransformStreamDefaultSinkWriteAlgorithm(stream, chunk) {\n var controller = stream._transformStreamController;\n if (stream._backpressure) {\n var backpressureChangePromise = stream._backpressureChangePromise;\n return transformPromiseWith(backpressureChangePromise, function () {\n var writable = stream._writable;\n var state = writable._state;\n if (state === 'erroring') {\n throw writable._storedError;\n }\n return TransformStreamDefaultControllerPerformTransform(controller, chunk);\n });\n }\n return TransformStreamDefaultControllerPerformTransform(controller, chunk);\n }\n function TransformStreamDefaultSinkAbortAlgorithm(stream, reason) {\n TransformStreamError(stream, reason);\n return promiseResolvedWith(undefined);\n }\n function TransformStreamDefaultSinkCloseAlgorithm(stream) {\n var readable = stream._readable;\n var controller = stream._transformStreamController;\n var flushPromise = controller._flushAlgorithm();\n TransformStreamDefaultControllerClearAlgorithms(controller);\n return transformPromiseWith(flushPromise, function () {\n if (readable._state === 'errored') {\n throw readable._storedError;\n }\n ReadableStreamDefaultControllerClose(readable._readableStreamController);\n }, function (r) {\n TransformStreamError(stream, r);\n throw readable._storedError;\n });\n }\n function TransformStreamDefaultSourcePullAlgorithm(stream) {\n TransformStreamSetBackpressure(stream, false);\n return stream._backpressureChangePromise;\n }\n function defaultControllerBrandCheckException(name) {\n return new TypeError(\"TransformStreamDefaultController.prototype.\" + name + \" can only be used on a TransformStreamDefaultController\");\n }\n function streamBrandCheckException(name) {\n return new TypeError(\"TransformStream.prototype.\" + name + \" can only be used on a TransformStream\");\n }\n exports.ByteLengthQueuingStrategy = ByteLengthQueuingStrategy;\n exports.CountQueuingStrategy = CountQueuingStrategy;\n exports.ReadableByteStreamController = ReadableByteStreamController;\n exports.ReadableStream = ReadableStream;\n exports.ReadableStreamBYOBReader = ReadableStreamBYOBReader;\n exports.ReadableStreamBYOBRequest = ReadableStreamBYOBRequest;\n exports.ReadableStreamDefaultController = ReadableStreamDefaultController;\n exports.ReadableStreamDefaultReader = ReadableStreamDefaultReader;\n exports.TransformStream = TransformStream;\n exports.TransformStreamDefaultController = TransformStreamDefaultController;\n exports.WritableStream = WritableStream;\n exports.WritableStreamDefaultController = WritableStreamDefaultController;\n exports.WritableStreamDefaultWriter = WritableStreamDefaultWriter;\n Object.defineProperty(exports, '__esModule', { value: true });\n}));\n\n/***/ }),\n/* 135 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(4);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar BaseCanvasFactory = /*#__PURE__*/function () {\n function BaseCanvasFactory() {\n _classCallCheck(this, BaseCanvasFactory);\n\n if (this.constructor === BaseCanvasFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\n\n _createClass(BaseCanvasFactory, [{\n key: \"create\",\n value: function create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n\n var canvas = this._createCanvas(width, height);\n\n return {\n canvas: canvas,\n context: canvas.getContext(\"2d\")\n };\n }\n }, {\n key: \"reset\",\n value: function reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n }, {\n key: \"destroy\",\n value: function destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n }, {\n key: \"_createCanvas\",\n value: function _createCanvas(width, height) {\n (0, _util.unreachable)(\"Abstract method `_createCanvas` called.\");\n }\n }]);\n\n return BaseCanvasFactory;\n}();\n\nexports.BaseCanvasFactory = BaseCanvasFactory;\n\nvar BaseCMapReaderFactory = /*#__PURE__*/function () {\n function BaseCMapReaderFactory(_ref) {\n var _ref$baseUrl = _ref.baseUrl,\n baseUrl = _ref$baseUrl === void 0 ? null : _ref$baseUrl,\n _ref$isCompressed = _ref.isCompressed,\n isCompressed = _ref$isCompressed === void 0 ? false : _ref$isCompressed;\n\n _classCallCheck(this, BaseCMapReaderFactory);\n\n if (this.constructor === BaseCMapReaderFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n _createClass(BaseCMapReaderFactory, [{\n key: \"fetch\",\n value: function () {\n var _fetch = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(_ref2) {\n var _this = this;\n\n var name, url, compressionType;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n name = _ref2.name;\n\n if (this.baseUrl) {\n _context.next = 3;\n break;\n }\n\n throw new Error('The CMap \"baseUrl\" parameter must be specified, ensure that ' + 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.');\n\n case 3:\n if (name) {\n _context.next = 5;\n break;\n }\n\n throw new Error(\"CMap name must be specified.\");\n\n case 5:\n url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;\n return _context.abrupt(\"return\", this._fetchData(url, compressionType)[\"catch\"](function (reason) {\n throw new Error(\"Unable to load \".concat(_this.isCompressed ? \"binary \" : \"\", \"CMap at: \").concat(url));\n }));\n\n case 8:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function fetch(_x) {\n return _fetch.apply(this, arguments);\n }\n\n return fetch;\n }()\n }, {\n key: \"_fetchData\",\n value: function _fetchData(url, compressionType) {\n (0, _util.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n }]);\n\n return BaseCMapReaderFactory;\n}();\n\nexports.BaseCMapReaderFactory = BaseCMapReaderFactory;\n\nvar BaseStandardFontDataFactory = /*#__PURE__*/function () {\n function BaseStandardFontDataFactory(_ref3) {\n var _ref3$baseUrl = _ref3.baseUrl,\n baseUrl = _ref3$baseUrl === void 0 ? null : _ref3$baseUrl;\n\n _classCallCheck(this, BaseStandardFontDataFactory);\n\n if (this.constructor === BaseStandardFontDataFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseStandardFontDataFactory.\");\n }\n\n this.baseUrl = baseUrl;\n }\n\n _createClass(BaseStandardFontDataFactory, [{\n key: \"fetch\",\n value: function () {\n var _fetch2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2(_ref4) {\n var filename, url;\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n filename = _ref4.filename;\n\n if (this.baseUrl) {\n _context2.next = 3;\n break;\n }\n\n throw new Error('The standard font \"baseUrl\" parameter must be specified, ensure that ' + 'the \"standardFontDataUrl\" API parameter is provided.');\n\n case 3:\n if (filename) {\n _context2.next = 5;\n break;\n }\n\n throw new Error(\"Font filename must be specified.\");\n\n case 5:\n url = \"\".concat(this.baseUrl).concat(filename);\n return _context2.abrupt(\"return\", this._fetchData(url)[\"catch\"](function (reason) {\n throw new Error(\"Unable to load font data at: \".concat(url));\n }));\n\n case 7:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function fetch(_x2) {\n return _fetch2.apply(this, arguments);\n }\n\n return fetch;\n }()\n }, {\n key: \"_fetchData\",\n value: function _fetchData(url) {\n (0, _util.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n }]);\n\n return BaseStandardFontDataFactory;\n}();\n\nexports.BaseStandardFontDataFactory = BaseStandardFontDataFactory;\n\nvar BaseSVGFactory = /*#__PURE__*/function () {\n function BaseSVGFactory() {\n _classCallCheck(this, BaseSVGFactory);\n\n if (this.constructor === BaseSVGFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseSVGFactory.\");\n }\n }\n\n _createClass(BaseSVGFactory, [{\n key: \"create\",\n value: function create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n\n var svg = this._createSVG(\"svg:svg\");\n\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"width\", \"\".concat(width, \"px\"));\n svg.setAttribute(\"height\", \"\".concat(height, \"px\"));\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", \"0 0 \".concat(width, \" \").concat(height));\n return svg;\n }\n }, {\n key: \"createElement\",\n value: function createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n\n return this._createSVG(type);\n }\n }, {\n key: \"_createSVG\",\n value: function _createSVG(type) {\n (0, _util.unreachable)(\"Abstract method `_createSVG` called.\");\n }\n }]);\n\n return BaseSVGFactory;\n}();\n\nexports.BaseSVGFactory = BaseSVGFactory;\n\n/***/ }),\n/* 136 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.build = exports.RenderTask = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0;\nexports.getDocument = getDocument;\nexports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;\nexports.version = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(4);\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _font_loader = __w_pdfjs_require__(137);\n\nvar _node_utils = __w_pdfjs_require__(138);\n\nvar _annotation_storage = __w_pdfjs_require__(139);\n\nvar _canvas = __w_pdfjs_require__(140);\n\nvar _worker_options = __w_pdfjs_require__(142);\n\nvar _is_node = __w_pdfjs_require__(6);\n\nvar _message_handler = __w_pdfjs_require__(143);\n\nvar _metadata = __w_pdfjs_require__(144);\n\nvar _optional_content_config = __w_pdfjs_require__(145);\n\nvar _transport_stream = __w_pdfjs_require__(146);\n\nvar _xfa_text = __w_pdfjs_require__(147);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\n\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\n\nfunction _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\n\nfunction _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError(\"attempted to set read only private field\"); } descriptor.value = value; } }\n\nfunction _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\"); return _classApplyDescriptorGet(receiver, descriptor); }\n\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError(\"attempted to \" + action + \" private field on non-instance\"); } return privateMap.get(receiver); }\n\nfunction _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar DEFAULT_RANGE_CHUNK_SIZE = 65536;\nvar RENDERING_CANCELLED_TIMEOUT = 100;\nvar DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory;\nexports.DefaultCanvasFactory = DefaultCanvasFactory;\nvar DefaultCMapReaderFactory = _is_node.isNodeJS ? _node_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory;\nexports.DefaultCMapReaderFactory = DefaultCMapReaderFactory;\nvar DefaultStandardFontDataFactory = _is_node.isNodeJS ? _node_utils.NodeStandardFontDataFactory : _display_utils.DOMStandardFontDataFactory;\nexports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory;\nvar createPDFNetworkStream;\n\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\nfunction getDocument(src) {\n var task = new PDFDocumentLoadingTask();\n var source;\n\n if (typeof src === \"string\" || src instanceof URL) {\n source = {\n url: src\n };\n } else if ((0, _util.isArrayBuffer)(src)) {\n source = {\n data: src\n };\n } else if (src instanceof PDFDataRangeTransport) {\n source = {\n range: src\n };\n } else {\n if (_typeof(src) !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, \" + \"need either string, URL, Uint8Array, or parameter object.\");\n }\n\n if (!src.url && !src.data && !src.range) {\n throw new Error(\"Invalid parameter object: need either .data, .range or .url\");\n }\n\n source = src;\n }\n\n var params = Object.create(null);\n var rangeTransport = null,\n worker = null;\n\n for (var key in source) {\n var value = source[key];\n\n switch (key) {\n case \"url\":\n if (typeof window !== \"undefined\") {\n try {\n params[key] = new URL(value, window.location).href;\n continue;\n } catch (ex) {\n (0, _util.warn)(\"Cannot create valid URL: \\\"\".concat(ex, \"\\\".\"));\n }\n } else if (typeof value === \"string\" || value instanceof URL) {\n params[key] = value.toString();\n continue;\n }\n\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n\n case \"range\":\n rangeTransport = value;\n continue;\n\n case \"worker\":\n worker = value;\n continue;\n\n case \"data\":\n if (_is_node.isNodeJS && typeof Buffer !== \"undefined\" && value instanceof Buffer) {\n params[key] = new Uint8Array(value);\n } else if (value instanceof Uint8Array) {\n break;\n } else if (typeof value === \"string\") {\n params[key] = (0, _util.stringToBytes)(value);\n } else if (_typeof(value) === \"object\" && value !== null && !isNaN(value.length)) {\n params[key] = new Uint8Array(value);\n } else if ((0, _util.isArrayBuffer)(value)) {\n params[key] = new Uint8Array(value);\n } else {\n throw new Error(\"Invalid PDF binary data: either typed array, \" + \"string, or array-like object is expected in the data property.\");\n }\n\n continue;\n }\n\n params[key] = value;\n }\n\n params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory;\n params.StandardFontDataFactory = params.StandardFontDataFactory || DefaultStandardFontDataFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n params.enableXfa = params.enableXfa === true;\n\n if (typeof params.docBaseUrl !== \"string\" || (0, _display_utils.isDataScheme)(params.docBaseUrl)) {\n params.docBaseUrl = null;\n }\n\n if (!Number.isInteger(params.maxImageSize)) {\n params.maxImageSize = -1;\n }\n\n if (typeof params.useWorkerFetch !== \"boolean\") {\n params.useWorkerFetch = params.CMapReaderFactory === _display_utils.DOMCMapReaderFactory && params.StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory;\n }\n\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace = _is_node.isNodeJS;\n }\n\n if (typeof params.useSystemFonts !== \"boolean\") {\n params.useSystemFonts = !_is_node.isNodeJS && !params.disableFontFace;\n }\n\n if (typeof params.ownerDocument === \"undefined\") {\n params.ownerDocument = globalThis.document;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n (0, _util.setVerbosityLevel)(params.verbosity);\n\n if (!worker) {\n var workerParams = {\n verbosity: params.verbosity,\n port: _worker_options.GlobalWorkerOptions.workerPort\n };\n worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n task._worker = worker;\n }\n\n var docId = task.docId;\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n var workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId);\n\n var networkStreamPromise = new Promise(function (resolve) {\n var networkStream;\n\n if (rangeTransport) {\n networkStream = new _transport_stream.PDFDataTransportStream({\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n contentDispositionFilename: params.contentDispositionFilename,\n disableRange: params.disableRange,\n disableStream: params.disableStream\n }, rangeTransport);\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream\n });\n }\n\n resolve(networkStream);\n });\n return Promise.all([workerIdPromise, networkStreamPromise]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n workerId = _ref2[0],\n networkStream = _ref2[1];\n\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n var messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);\n var transport = new WorkerTransport(messageHandler, task, networkStream, params);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n })[\"catch\"](task._capability.reject);\n return task;\n}\n\nfunction _fetchDocument(_x, _x2, _x3, _x4) {\n return _fetchDocument2.apply(this, arguments);\n}\n\nfunction _fetchDocument2() {\n _fetchDocument2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee7(worker, source, pdfDataRangeTransport, docId) {\n var workerId;\n return _regenerator[\"default\"].wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n if (!worker.destroyed) {\n _context7.next = 2;\n break;\n }\n\n throw new Error(\"Worker was destroyed\");\n\n case 2:\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename;\n }\n\n _context7.next = 5;\n return worker.messageHandler.sendWithPromise(\"GetDocRequest\", {\n docId: docId,\n apiVersion: '2.12.313',\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties,\n enableXfa: source.enableXfa,\n useSystemFonts: source.useSystemFonts,\n cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,\n standardFontDataUrl: source.useWorkerFetch ? source.standardFontDataUrl : null\n });\n\n case 5:\n workerId = _context7.sent;\n\n if (!worker.destroyed) {\n _context7.next = 8;\n break;\n }\n\n throw new Error(\"Worker was destroyed\");\n\n case 8:\n return _context7.abrupt(\"return\", workerId);\n\n case 9:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }));\n return _fetchDocument2.apply(this, arguments);\n}\n\nvar PDFDocumentLoadingTask = /*#__PURE__*/function () {\n function PDFDocumentLoadingTask() {\n _classCallCheck(this, PDFDocumentLoadingTask);\n\n this._capability = (0, _util.createPromiseCapability)();\n this._transport = null;\n this._worker = null;\n this.docId = \"d\".concat(PDFDocumentLoadingTask.idCounters.doc++);\n this.destroyed = false;\n this.onPassword = null;\n this.onProgress = null;\n this.onUnsupportedFeature = null;\n }\n\n _createClass(PDFDocumentLoadingTask, [{\n key: \"promise\",\n get: function get() {\n return this._capability.promise;\n }\n }, {\n key: \"destroy\",\n value: function () {\n var _destroy = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee() {\n var _this$_transport;\n\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.destroyed = true;\n _context.next = 3;\n return (_this$_transport = this._transport) === null || _this$_transport === void 0 ? void 0 : _this$_transport.destroy();\n\n case 3:\n this._transport = null;\n\n if (this._worker) {\n this._worker.destroy();\n\n this._worker = null;\n }\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function destroy() {\n return _destroy.apply(this, arguments);\n }\n\n return destroy;\n }()\n }], [{\n key: \"idCounters\",\n get: function get() {\n return (0, _util.shadow)(this, \"idCounters\", {\n doc: 0\n });\n }\n }]);\n\n return PDFDocumentLoadingTask;\n}();\n\nexports.PDFDocumentLoadingTask = PDFDocumentLoadingTask;\n\nvar PDFDataRangeTransport = /*#__PURE__*/function () {\n function PDFDataRangeTransport(length, initialData) {\n var progressiveDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var contentDispositionFilename = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n _classCallCheck(this, PDFDataRangeTransport);\n\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = (0, _util.createPromiseCapability)();\n }\n\n _createClass(PDFDataRangeTransport, [{\n key: \"addRangeListener\",\n value: function addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n }, {\n key: \"addProgressListener\",\n value: function addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n }, {\n key: \"addProgressiveReadListener\",\n value: function addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n }, {\n key: \"addProgressiveDoneListener\",\n value: function addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n }, {\n key: \"onDataRange\",\n value: function onDataRange(begin, chunk) {\n var _iterator = _createForOfIteratorHelper(this._rangeListeners),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var listener = _step.value;\n listener(begin, chunk);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"onDataProgress\",\n value: function onDataProgress(loaded, total) {\n var _this = this;\n\n this._readyCapability.promise.then(function () {\n var _iterator2 = _createForOfIteratorHelper(_this._progressListeners),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var listener = _step2.value;\n listener(loaded, total);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n });\n }\n }, {\n key: \"onDataProgressiveRead\",\n value: function onDataProgressiveRead(chunk) {\n var _this2 = this;\n\n this._readyCapability.promise.then(function () {\n var _iterator3 = _createForOfIteratorHelper(_this2._progressiveReadListeners),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var listener = _step3.value;\n listener(chunk);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n });\n }\n }, {\n key: \"onDataProgressiveDone\",\n value: function onDataProgressiveDone() {\n var _this3 = this;\n\n this._readyCapability.promise.then(function () {\n var _iterator4 = _createForOfIteratorHelper(_this3._progressiveDoneListeners),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var listener = _step4.value;\n listener();\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n });\n }\n }, {\n key: \"transportReady\",\n value: function transportReady() {\n this._readyCapability.resolve();\n }\n }, {\n key: \"requestDataRange\",\n value: function requestDataRange(begin, end) {\n (0, _util.unreachable)(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n }, {\n key: \"abort\",\n value: function abort() {}\n }]);\n\n return PDFDataRangeTransport;\n}();\n\nexports.PDFDataRangeTransport = PDFDataRangeTransport;\n\nvar PDFDocumentProxy = /*#__PURE__*/function () {\n function PDFDocumentProxy(pdfInfo, transport) {\n var _this4 = this;\n\n _classCallCheck(this, PDFDocumentProxy);\n\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n Object.defineProperty(this, \"fingerprint\", {\n get: function get() {\n (0, _display_utils.deprecated)(\"`PDFDocumentProxy.fingerprint`, \" + \"please use `PDFDocumentProxy.fingerprints` instead.\");\n return this.fingerprints[0];\n }\n });\n Object.defineProperty(this, \"getStats\", {\n value: function () {\n var _value = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2() {\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n (0, _display_utils.deprecated)(\"`PDFDocumentProxy.getStats`, \" + \"please use the `PDFDocumentProxy.stats`-getter instead.\");\n return _context2.abrupt(\"return\", _this4.stats || {\n streamTypes: {},\n fontTypes: {}\n });\n\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n function value() {\n return _value.apply(this, arguments);\n }\n\n return value;\n }()\n });\n }\n\n _createClass(PDFDocumentProxy, [{\n key: \"annotationStorage\",\n get: function get() {\n return this._transport.annotationStorage;\n }\n }, {\n key: \"numPages\",\n get: function get() {\n return this._pdfInfo.numPages;\n }\n }, {\n key: \"fingerprints\",\n get: function get() {\n return this._pdfInfo.fingerprints;\n }\n }, {\n key: \"stats\",\n get: function get() {\n return this._transport.stats;\n }\n }, {\n key: \"isPureXfa\",\n get: function get() {\n return !!this._transport._htmlForXfa;\n }\n }, {\n key: \"allXfaHtml\",\n get: function get() {\n return this._transport._htmlForXfa;\n }\n }, {\n key: \"getPage\",\n value: function getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n }, {\n key: \"getPageIndex\",\n value: function getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n }, {\n key: \"getDestinations\",\n value: function getDestinations() {\n return this._transport.getDestinations();\n }\n }, {\n key: \"getDestination\",\n value: function getDestination(id) {\n return this._transport.getDestination(id);\n }\n }, {\n key: \"getPageLabels\",\n value: function getPageLabels() {\n return this._transport.getPageLabels();\n }\n }, {\n key: \"getPageLayout\",\n value: function getPageLayout() {\n return this._transport.getPageLayout();\n }\n }, {\n key: \"getPageMode\",\n value: function getPageMode() {\n return this._transport.getPageMode();\n }\n }, {\n key: \"getViewerPreferences\",\n value: function getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n }, {\n key: \"getOpenAction\",\n value: function getOpenAction() {\n return this._transport.getOpenAction();\n }\n }, {\n key: \"getAttachments\",\n value: function getAttachments() {\n return this._transport.getAttachments();\n }\n }, {\n key: \"getJavaScript\",\n value: function getJavaScript() {\n return this._transport.getJavaScript();\n }\n }, {\n key: \"getJSActions\",\n value: function getJSActions() {\n return this._transport.getDocJSActions();\n }\n }, {\n key: \"getOutline\",\n value: function getOutline() {\n return this._transport.getOutline();\n }\n }, {\n key: \"getOptionalContentConfig\",\n value: function getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n }, {\n key: \"getPermissions\",\n value: function getPermissions() {\n return this._transport.getPermissions();\n }\n }, {\n key: \"getMetadata\",\n value: function getMetadata() {\n return this._transport.getMetadata();\n }\n }, {\n key: \"getMarkInfo\",\n value: function getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n }, {\n key: \"getData\",\n value: function getData() {\n return this._transport.getData();\n }\n }, {\n key: \"getDownloadInfo\",\n value: function getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n }, {\n key: \"cleanup\",\n value: function cleanup() {\n var keepLoadedFonts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n return this.loadingTask.destroy();\n }\n }, {\n key: \"loadingParams\",\n get: function get() {\n return this._transport.loadingParams;\n }\n }, {\n key: \"loadingTask\",\n get: function get() {\n return this._transport.loadingTask;\n }\n }, {\n key: \"saveDocument\",\n value: function saveDocument() {\n if (this._transport.annotationStorage.size <= 0) {\n (0, _display_utils.deprecated)(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n\n return this._transport.saveDocument();\n }\n }, {\n key: \"getFieldObjects\",\n value: function getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n }, {\n key: \"hasJSActions\",\n value: function hasJSActions() {\n return this._transport.hasJSActions();\n }\n }, {\n key: \"getCalculationOrderIds\",\n value: function getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n }]);\n\n return PDFDocumentProxy;\n}();\n\nexports.PDFDocumentProxy = PDFDocumentProxy;\n\nvar PDFPageProxy = /*#__PURE__*/function () {\n function PDFPageProxy(pageIndex, pageInfo, transport, ownerDocument) {\n var pdfBug = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n _classCallCheck(this, PDFPageProxy);\n\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._ownerDocument = ownerDocument;\n this._transport = transport;\n this._stats = pdfBug ? new _display_utils.StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this._intentStates = new Map();\n this._annotationPromises = new Map();\n this.destroyed = false;\n }\n\n _createClass(PDFPageProxy, [{\n key: \"pageNumber\",\n get: function get() {\n return this._pageIndex + 1;\n }\n }, {\n key: \"rotate\",\n get: function get() {\n return this._pageInfo.rotate;\n }\n }, {\n key: \"ref\",\n get: function get() {\n return this._pageInfo.ref;\n }\n }, {\n key: \"userUnit\",\n get: function get() {\n return this._pageInfo.userUnit;\n }\n }, {\n key: \"view\",\n get: function get() {\n return this._pageInfo.view;\n }\n }, {\n key: \"getViewport\",\n value: function getViewport() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n scale = _ref3.scale,\n _ref3$rotation = _ref3.rotation,\n rotation = _ref3$rotation === void 0 ? this.rotate : _ref3$rotation,\n _ref3$offsetX = _ref3.offsetX,\n offsetX = _ref3$offsetX === void 0 ? 0 : _ref3$offsetX,\n _ref3$offsetY = _ref3.offsetY,\n offsetY = _ref3$offsetY === void 0 ? 0 : _ref3$offsetY,\n _ref3$dontFlip = _ref3.dontFlip,\n dontFlip = _ref3$dontFlip === void 0 ? false : _ref3$dontFlip;\n\n return new _display_utils.PageViewport({\n viewBox: this.view,\n scale: scale,\n rotation: rotation,\n offsetX: offsetX,\n offsetY: offsetY,\n dontFlip: dontFlip\n });\n }\n }, {\n key: \"getAnnotations\",\n value: function getAnnotations() {\n var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref4$intent = _ref4.intent,\n intent = _ref4$intent === void 0 ? \"display\" : _ref4$intent;\n\n var intentArgs = this._transport.getRenderingIntent(intent);\n\n var promise = this._annotationPromises.get(intentArgs.cacheKey);\n\n if (!promise) {\n promise = this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent);\n\n this._annotationPromises.set(intentArgs.cacheKey, promise);\n\n promise = promise.then(function (annotations) {\n var _iterator5 = _createForOfIteratorHelper(annotations),\n _step5;\n\n try {\n var _loop = function _loop() {\n var annotation = _step5.value;\n\n if (annotation.titleObj !== undefined) {\n Object.defineProperty(annotation, \"title\", {\n get: function get() {\n (0, _display_utils.deprecated)(\"`title`-property on annotation, please use `titleObj` instead.\");\n return annotation.titleObj.str;\n }\n });\n }\n\n if (annotation.contentsObj !== undefined) {\n Object.defineProperty(annotation, \"contents\", {\n get: function get() {\n (0, _display_utils.deprecated)(\"`contents`-property on annotation, please use `contentsObj` instead.\");\n return annotation.contentsObj.str;\n }\n });\n }\n };\n\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n return annotations;\n });\n }\n\n return promise;\n }\n }, {\n key: \"getJSActions\",\n value: function getJSActions() {\n return this._jsActionsPromise || (this._jsActionsPromise = this._transport.getPageJSActions(this._pageIndex));\n }\n }, {\n key: \"getXfa\",\n value: function () {\n var _getXfa = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee3() {\n var _this$_transport$_htm;\n\n return _regenerator[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt(\"return\", ((_this$_transport$_htm = this._transport._htmlForXfa) === null || _this$_transport$_htm === void 0 ? void 0 : _this$_transport$_htm.children[this._pageIndex]) || null);\n\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getXfa() {\n return _getXfa.apply(this, arguments);\n }\n\n return getXfa;\n }()\n }, {\n key: \"render\",\n value: function render(_ref5) {\n var _arguments$,\n _arguments$2,\n _this5 = this,\n _intentState;\n\n var canvasContext = _ref5.canvasContext,\n viewport = _ref5.viewport,\n _ref5$intent = _ref5.intent,\n intent = _ref5$intent === void 0 ? \"display\" : _ref5$intent,\n _ref5$annotationMode = _ref5.annotationMode,\n annotationMode = _ref5$annotationMode === void 0 ? _util.AnnotationMode.ENABLE : _ref5$annotationMode,\n _ref5$transform = _ref5.transform,\n transform = _ref5$transform === void 0 ? null : _ref5$transform,\n _ref5$imageLayer = _ref5.imageLayer,\n imageLayer = _ref5$imageLayer === void 0 ? null : _ref5$imageLayer,\n _ref5$canvasFactory = _ref5.canvasFactory,\n canvasFactory = _ref5$canvasFactory === void 0 ? null : _ref5$canvasFactory,\n _ref5$background = _ref5.background,\n background = _ref5$background === void 0 ? null : _ref5$background,\n _ref5$optionalContent = _ref5.optionalContentConfigPromise,\n optionalContentConfigPromise = _ref5$optionalContent === void 0 ? null : _ref5$optionalContent,\n _ref5$annotationCanva = _ref5.annotationCanvasMap,\n annotationCanvasMap = _ref5$annotationCanva === void 0 ? null : _ref5$annotationCanva;\n\n if (((_arguments$ = arguments[0]) === null || _arguments$ === void 0 ? void 0 : _arguments$.renderInteractiveForms) !== undefined) {\n (0, _display_utils.deprecated)(\"render no longer accepts the `renderInteractiveForms`-option, \" + \"please use the `annotationMode`-option instead.\");\n\n if (arguments[0].renderInteractiveForms === true && annotationMode === _util.AnnotationMode.ENABLE) {\n annotationMode = _util.AnnotationMode.ENABLE_FORMS;\n }\n }\n\n if (((_arguments$2 = arguments[0]) === null || _arguments$2 === void 0 ? void 0 : _arguments$2.includeAnnotationStorage) !== undefined) {\n (0, _display_utils.deprecated)(\"render no longer accepts the `includeAnnotationStorage`-option, \" + \"please use the `annotationMode`-option instead.\");\n\n if (arguments[0].includeAnnotationStorage === true && annotationMode === _util.AnnotationMode.ENABLE) {\n annotationMode = _util.AnnotationMode.ENABLE_STORAGE;\n }\n }\n\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n var intentArgs = this._transport.getRenderingIntent(intent, annotationMode);\n\n this.pendingCleanup = false;\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n var intentState = this._intentStates.get(intentArgs.cacheKey);\n\n if (!intentState) {\n intentState = Object.create(null);\n\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n var canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({\n ownerDocument: this._ownerDocument\n });\n var intentPrint = !!(intentArgs.renderingIntent & _util.RenderingIntentFlag.PRINT);\n\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = (0, _util.createPromiseCapability)();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n\n this._pumpOperatorList(intentArgs);\n }\n\n var complete = function complete(error) {\n intentState.renderTasks[\"delete\"](internalRenderTask);\n\n if (_this5.cleanupAfterRender || intentPrint) {\n _this5.pendingCleanup = true;\n }\n\n _this5._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n _this5._abortOperatorList({\n intentState: intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n\n if (_this5._stats) {\n _this5._stats.timeEnd(\"Rendering\");\n\n _this5._stats.timeEnd(\"Overall\");\n }\n };\n\n var internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext: canvasContext,\n viewport: viewport,\n transform: transform,\n imageLayer: imageLayer,\n background: background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap: annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug\n });\n ((_intentState = intentState).renderTasks || (_intentState.renderTasks = new Set())).add(internalRenderTask);\n var renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(function (_ref6) {\n var _ref7 = _slicedToArray(_ref6, 2),\n transparency = _ref7[0],\n optionalContentConfig = _ref7[1];\n\n if (_this5.pendingCleanup) {\n complete();\n return;\n }\n\n if (_this5._stats) {\n _this5._stats.time(\"Rendering\");\n }\n\n internalRenderTask.initializeGraphics({\n transparency: transparency,\n optionalContentConfig: optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n })[\"catch\"](complete);\n return renderTask;\n }\n }, {\n key: \"getOperatorList\",\n value: function getOperatorList() {\n var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref8$intent = _ref8.intent,\n intent = _ref8$intent === void 0 ? \"display\" : _ref8$intent,\n _ref8$annotationMode = _ref8.annotationMode,\n annotationMode = _ref8$annotationMode === void 0 ? _util.AnnotationMode.ENABLE : _ref8$annotationMode;\n\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks[\"delete\"](opListTask);\n }\n }\n\n var intentArgs = this._transport.getRenderingIntent(intent, annotationMode, true);\n\n var intentState = this._intentStates.get(intentArgs.cacheKey);\n\n if (!intentState) {\n intentState = Object.create(null);\n\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n var opListTask;\n\n if (!intentState.opListReadCapability) {\n var _intentState2;\n\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = (0, _util.createPromiseCapability)();\n ((_intentState2 = intentState).renderTasks || (_intentState2.renderTasks = new Set())).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n\n this._pumpOperatorList(intentArgs);\n }\n\n return intentState.opListReadCapability.promise;\n }\n }, {\n key: \"streamTextContent\",\n value: function streamTextContent() {\n var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref9$normalizeWhites = _ref9.normalizeWhitespace,\n normalizeWhitespace = _ref9$normalizeWhites === void 0 ? false : _ref9$normalizeWhites,\n _ref9$disableCombineT = _ref9.disableCombineTextItems,\n disableCombineTextItems = _ref9$disableCombineT === void 0 ? false : _ref9$disableCombineT,\n _ref9$includeMarkedCo = _ref9.includeMarkedContent,\n includeMarkedContent = _ref9$includeMarkedCo === void 0 ? false : _ref9$includeMarkedCo;\n\n var TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n normalizeWhitespace: normalizeWhitespace === true,\n combineTextItems: disableCombineTextItems !== true,\n includeMarkedContent: includeMarkedContent === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size: function size(textContent) {\n return textContent.items.length;\n }\n });\n }\n }, {\n key: \"getTextContent\",\n value: function getTextContent() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(function (xfa) {\n return _xfa_text.XfaText.textContent(xfa);\n });\n }\n\n var readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function (_ref10) {\n var _textContent$items;\n\n var value = _ref10.value,\n done = _ref10.done;\n\n if (done) {\n resolve(textContent);\n return;\n }\n\n Object.assign(textContent.styles, value.styles);\n\n (_textContent$items = textContent.items).push.apply(_textContent$items, _toConsumableArray(value.items));\n\n pump();\n }, reject);\n }\n\n var reader = readableStream.getReader();\n var textContent = {\n items: [],\n styles: Object.create(null)\n };\n pump();\n });\n }\n }, {\n key: \"getStructTree\",\n value: function getStructTree() {\n return this._structTreePromise || (this._structTreePromise = this._transport.getStructTree(this._pageIndex));\n }\n }, {\n key: \"_destroy\",\n value: function _destroy() {\n this.destroyed = true;\n var waitOn = [];\n\n var _iterator6 = _createForOfIteratorHelper(this._intentStates.values()),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var intentState = _step6.value;\n\n this._abortOperatorList({\n intentState: intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n\n if (intentState.opListReadCapability) {\n continue;\n }\n\n var _iterator7 = _createForOfIteratorHelper(intentState.renderTasks),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var internalRenderTask = _step7.value;\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n this.objs.clear();\n\n this._annotationPromises.clear();\n\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n }, {\n key: \"cleanup\",\n value: function cleanup() {\n var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n }, {\n key: \"_tryCleanup\",\n value: function _tryCleanup() {\n var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (!this.pendingCleanup) {\n return false;\n }\n\n var _iterator8 = _createForOfIteratorHelper(this._intentStates.values()),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var _step8$value = _step8.value,\n renderTasks = _step8$value.renderTasks,\n operatorList = _step8$value.operatorList;\n\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n\n this._intentStates.clear();\n\n this.objs.clear();\n\n this._annotationPromises.clear();\n\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n\n if (resetStats && this._stats) {\n this._stats = new _display_utils.StatTimer();\n }\n\n this.pendingCleanup = false;\n return true;\n }\n }, {\n key: \"_startRenderPage\",\n value: function _startRenderPage(transparency, cacheKey) {\n var intentState = this._intentStates.get(cacheKey);\n\n if (!intentState) {\n return;\n }\n\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\n }, {\n key: \"_renderPageChunk\",\n value: function _renderPageChunk(operatorListChunk, intentState) {\n for (var i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n var _iterator9 = _createForOfIteratorHelper(intentState.renderTasks),\n _step9;\n\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var internalRenderTask = _step9.value;\n internalRenderTask.operatorListChanged();\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n }, {\n key: \"_pumpOperatorList\",\n value: function _pumpOperatorList(_ref11) {\n var _this6 = this;\n\n var renderingIntent = _ref11.renderingIntent,\n cacheKey = _ref11.cacheKey;\n\n var readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey: cacheKey,\n annotationStorage: renderingIntent & _util.RenderingIntentFlag.ANNOTATIONS_STORAGE ? this._transport.annotationStorage.serializable : null\n });\n\n var reader = readableStream.getReader();\n\n var intentState = this._intentStates.get(cacheKey);\n\n intentState.streamReader = reader;\n\n var pump = function pump() {\n reader.read().then(function (_ref12) {\n var value = _ref12.value,\n done = _ref12.done;\n\n if (done) {\n intentState.streamReader = null;\n return;\n }\n\n if (_this6._transport.destroyed) {\n return;\n }\n\n _this6._renderPageChunk(value, intentState);\n\n pump();\n }, function (reason) {\n intentState.streamReader = null;\n\n if (_this6._transport.destroyed) {\n return;\n }\n\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n\n var _iterator10 = _createForOfIteratorHelper(intentState.renderTasks),\n _step10;\n\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var internalRenderTask = _step10.value;\n internalRenderTask.operatorListChanged();\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n\n _this6._tryCleanup();\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n\n pump();\n }\n }, {\n key: \"_abortOperatorList\",\n value: function _abortOperatorList(_ref13) {\n var _this7 = this;\n\n var intentState = _ref13.intentState,\n reason = _ref13.reason,\n _ref13$force = _ref13.force,\n force = _ref13$force === void 0 ? false : _ref13$force;\n\n if (!intentState.streamReader) {\n return;\n }\n\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n\n if (reason instanceof _display_utils.RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(function () {\n _this7._abortOperatorList({\n intentState: intentState,\n reason: reason,\n force: true\n });\n\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n\n intentState.streamReader.cancel(new _util.AbortException(reason.message))[\"catch\"](function () {});\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return;\n }\n\n var _iterator11 = _createForOfIteratorHelper(this._intentStates),\n _step11;\n\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var _step11$value = _slicedToArray(_step11.value, 2),\n curCacheKey = _step11$value[0],\n curIntentState = _step11$value[1];\n\n if (curIntentState === intentState) {\n this._intentStates[\"delete\"](curCacheKey);\n\n break;\n }\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n\n this.cleanup();\n }\n }, {\n key: \"stats\",\n get: function get() {\n return this._stats;\n }\n }]);\n\n return PDFPageProxy;\n}();\n\nexports.PDFPageProxy = PDFPageProxy;\n\nvar LoopbackPort = /*#__PURE__*/function () {\n function LoopbackPort() {\n _classCallCheck(this, LoopbackPort);\n\n this._listeners = [];\n this._deferred = Promise.resolve();\n }\n\n _createClass(LoopbackPort, [{\n key: \"postMessage\",\n value: function postMessage(obj, transfers) {\n var _this8 = this;\n\n function cloneValue(object) {\n if (globalThis.structuredClone) {\n return globalThis.structuredClone(object, transfers);\n }\n\n function fallbackCloneValue(value) {\n if (typeof value === \"function\" || _typeof(value) === \"symbol\" || value instanceof URL) {\n throw new Error(\"LoopbackPort.postMessage - cannot clone: \".concat(value === null || value === void 0 ? void 0 : value.toString()));\n }\n\n if (_typeof(value) !== \"object\" || value === null) {\n return value;\n }\n\n if (cloned.has(value)) {\n return cloned.get(value);\n }\n\n var buffer, result;\n\n if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {\n if (transfers !== null && transfers !== void 0 && transfers.includes(buffer)) {\n result = new value.constructor(buffer, value.byteOffset, value.byteLength);\n } else {\n result = new value.constructor(value);\n }\n\n cloned.set(value, result);\n return result;\n }\n\n if (value instanceof Map) {\n result = new Map();\n cloned.set(value, result);\n\n var _iterator12 = _createForOfIteratorHelper(value),\n _step12;\n\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var _step12$value = _slicedToArray(_step12.value, 2),\n key = _step12$value[0],\n val = _step12$value[1];\n\n result.set(key, fallbackCloneValue(val));\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n\n return result;\n }\n\n if (value instanceof Set) {\n result = new Set();\n cloned.set(value, result);\n\n var _iterator13 = _createForOfIteratorHelper(value),\n _step13;\n\n try {\n for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n var _val = _step13.value;\n result.add(fallbackCloneValue(_val));\n }\n } catch (err) {\n _iterator13.e(err);\n } finally {\n _iterator13.f();\n }\n\n return result;\n }\n\n result = Array.isArray(value) ? [] : Object.create(null);\n cloned.set(value, result);\n\n for (var i in value) {\n var _value$hasOwnProperty;\n\n var desc = void 0,\n p = value;\n\n while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {\n p = Object.getPrototypeOf(p);\n }\n\n if (typeof desc.value === \"undefined\") {\n continue;\n }\n\n if (typeof desc.value === \"function\" && !((_value$hasOwnProperty = value.hasOwnProperty) !== null && _value$hasOwnProperty !== void 0 && _value$hasOwnProperty.call(value, i))) {\n continue;\n }\n\n result[i] = fallbackCloneValue(desc.value);\n }\n\n return result;\n }\n\n var cloned = new WeakMap();\n return fallbackCloneValue(object);\n }\n\n var event = {\n data: cloneValue(obj)\n };\n\n this._deferred.then(function () {\n var _iterator14 = _createForOfIteratorHelper(_this8._listeners),\n _step14;\n\n try {\n for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {\n var listener = _step14.value;\n listener.call(_this8, event);\n }\n } catch (err) {\n _iterator14.e(err);\n } finally {\n _iterator14.f();\n }\n });\n }\n }, {\n key: \"addEventListener\",\n value: function addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(name, listener) {\n var i = this._listeners.indexOf(listener);\n\n this._listeners.splice(i, 1);\n }\n }, {\n key: \"terminate\",\n value: function terminate() {\n this._listeners.length = 0;\n }\n }]);\n\n return LoopbackPort;\n}();\n\nexports.LoopbackPort = LoopbackPort;\nvar PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0\n};\n{\n if (_is_node.isNodeJS && typeof require === \"function\") {\n PDFWorkerUtil.isWorkerDisabled = true;\n PDFWorkerUtil.fallbackWorkerSrc = \"./pdf.worker.js\";\n } else if ((typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === \"object\") {\n var _document, _document$currentScri;\n\n var pdfjsFilePath = (_document = document) === null || _document === void 0 ? void 0 : (_document$currentScri = _document.currentScript) === null || _document$currentScri === void 0 ? void 0 : _document$currentScri.src;\n\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i, \".worker$1$2\");\n }\n }\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n var wrapper = \"importScripts(\\\"\".concat(url, \"\\\");\");\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\n\nvar PDFWorker = /*#__PURE__*/function () {\n function PDFWorker() {\n var _ref14 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref14$name = _ref14.name,\n name = _ref14$name === void 0 ? null : _ref14$name,\n _ref14$port = _ref14.port,\n port = _ref14$port === void 0 ? null : _ref14$port,\n _ref14$verbosity = _ref14.verbosity,\n verbosity = _ref14$verbosity === void 0 ? (0, _util.getVerbosityLevel)() : _ref14$verbosity;\n\n _classCallCheck(this, PDFWorker);\n\n if (port && PDFWorker._workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n this._readyCapability = (0, _util.createPromiseCapability)();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n PDFWorker._workerPorts.set(port, this);\n\n this._initializeFromPort(port);\n\n return;\n }\n\n this._initialize();\n }\n\n _createClass(PDFWorker, [{\n key: \"promise\",\n get: function get() {\n return this._readyCapability.promise;\n }\n }, {\n key: \"port\",\n get: function get() {\n return this._port;\n }\n }, {\n key: \"messageHandler\",\n get: function get() {\n return this._messageHandler;\n }\n }, {\n key: \"_initializeFromPort\",\n value: function _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", port);\n\n this._messageHandler.on(\"ready\", function () {});\n\n this._readyCapability.resolve();\n }\n }, {\n key: \"_initialize\",\n value: function _initialize() {\n var _this9 = this;\n\n if (typeof Worker !== \"undefined\" && !PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) {\n var workerSrc = PDFWorker.workerSrc;\n\n try {\n if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n\n var worker = new Worker(workerSrc);\n var messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", worker);\n\n var terminateEarly = function terminateEarly() {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n\n if (_this9.destroyed) {\n _this9._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n _this9._setupFakeWorker();\n }\n };\n\n var onWorkerError = function onWorkerError() {\n if (!_this9._webWorker) {\n terminateEarly();\n }\n };\n\n worker.addEventListener(\"error\", onWorkerError);\n messageHandler.on(\"test\", function (data) {\n worker.removeEventListener(\"error\", onWorkerError);\n\n if (_this9.destroyed) {\n terminateEarly();\n return;\n }\n\n if (data) {\n _this9._messageHandler = messageHandler;\n _this9._port = worker;\n _this9._webWorker = worker;\n\n _this9._readyCapability.resolve();\n\n messageHandler.send(\"configure\", {\n verbosity: _this9.verbosity\n });\n } else {\n _this9._setupFakeWorker();\n\n messageHandler.destroy();\n worker.terminate();\n }\n });\n messageHandler.on(\"ready\", function (data) {\n worker.removeEventListener(\"error\", onWorkerError);\n\n if (_this9.destroyed) {\n terminateEarly();\n return;\n }\n\n try {\n sendTest();\n } catch (e) {\n _this9._setupFakeWorker();\n }\n });\n\n var sendTest = function sendTest() {\n var testObj = new Uint8Array([255]);\n\n try {\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n } catch (ex) {\n (0, _util.warn)(\"Cannot use postMessage transfers.\");\n testObj[0] = 0;\n messageHandler.send(\"test\", testObj);\n }\n };\n\n sendTest();\n return;\n } catch (e) {\n (0, _util.info)(\"The worker has been disabled.\");\n }\n }\n\n this._setupFakeWorker();\n }\n }, {\n key: \"_setupFakeWorker\",\n value: function _setupFakeWorker() {\n var _this10 = this;\n\n if (!PDFWorkerUtil.isWorkerDisabled) {\n (0, _util.warn)(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal.then(function (WorkerMessageHandler) {\n if (_this10.destroyed) {\n _this10._readyCapability.reject(new Error(\"Worker was destroyed\"));\n\n return;\n }\n\n var port = new LoopbackPort();\n _this10._port = port;\n var id = \"fake\".concat(PDFWorkerUtil.fakeWorkerId++);\n var workerHandler = new _message_handler.MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n var messageHandler = new _message_handler.MessageHandler(id, id + \"_worker\", port);\n _this10._messageHandler = messageHandler;\n\n _this10._readyCapability.resolve();\n\n messageHandler.send(\"configure\", {\n verbosity: _this10.verbosity\n });\n })[\"catch\"](function (reason) {\n _this10._readyCapability.reject(new Error(\"Setting up fake worker failed: \\\"\".concat(reason.message, \"\\\".\")));\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.destroyed = true;\n\n if (this._webWorker) {\n this._webWorker.terminate();\n\n this._webWorker = null;\n }\n\n PDFWorker._workerPorts[\"delete\"](this._port);\n\n this._port = null;\n\n if (this._messageHandler) {\n this._messageHandler.destroy();\n\n this._messageHandler = null;\n }\n }\n }], [{\n key: \"_workerPorts\",\n get: function get() {\n return (0, _util.shadow)(this, \"_workerPorts\", new WeakMap());\n }\n }, {\n key: \"fromPort\",\n value: function fromPort(params) {\n if (!(params !== null && params !== void 0 && params.port)) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n\n if (this._workerPorts.has(params.port)) {\n return this._workerPorts.get(params.port);\n }\n\n return new PDFWorker(params);\n }\n }, {\n key: \"workerSrc\",\n get: function get() {\n if (_worker_options.GlobalWorkerOptions.workerSrc) {\n return _worker_options.GlobalWorkerOptions.workerSrc;\n }\n\n if (PDFWorkerUtil.fallbackWorkerSrc !== null) {\n if (!_is_node.isNodeJS) {\n (0, _display_utils.deprecated)('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n }, {\n key: \"_mainThreadWorkerMessageHandler\",\n get: function get() {\n try {\n var _globalThis$pdfjsWork;\n\n return ((_globalThis$pdfjsWork = globalThis.pdfjsWorker) === null || _globalThis$pdfjsWork === void 0 ? void 0 : _globalThis$pdfjsWork.WorkerMessageHandler) || null;\n } catch (ex) {\n return null;\n }\n }\n }, {\n key: \"_setupFakeWorkerGlobal\",\n get: function get() {\n var _this11 = this;\n\n var loader = /*#__PURE__*/function () {\n var _ref15 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee4() {\n var mainWorkerMessageHandler, worker;\n return _regenerator[\"default\"].wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n mainWorkerMessageHandler = _this11._mainThreadWorkerMessageHandler;\n\n if (!mainWorkerMessageHandler) {\n _context4.next = 3;\n break;\n }\n\n return _context4.abrupt(\"return\", mainWorkerMessageHandler);\n\n case 3:\n if (!(_is_node.isNodeJS && typeof require === \"function\")) {\n _context4.next = 6;\n break;\n }\n\n worker = eval(\"require\")(_this11.workerSrc);\n return _context4.abrupt(\"return\", worker.WorkerMessageHandler);\n\n case 6:\n _context4.next = 8;\n return (0, _display_utils.loadScript)(_this11.workerSrc);\n\n case 8:\n return _context4.abrupt(\"return\", window.pdfjsWorker.WorkerMessageHandler);\n\n case 9:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n\n return function loader() {\n return _ref15.apply(this, arguments);\n };\n }();\n\n return (0, _util.shadow)(this, \"_setupFakeWorkerGlobal\", loader());\n }\n }]);\n\n return PDFWorker;\n}();\n\nexports.PDFWorker = PDFWorker;\n{\n PDFWorker.getWorkerSrc = function () {\n (0, _display_utils.deprecated)(\"`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead.\");\n return this.workerSrc;\n };\n}\n\nvar _docStats = /*#__PURE__*/new WeakMap();\n\nvar _pageCache = /*#__PURE__*/new WeakMap();\n\nvar _pagePromises = /*#__PURE__*/new WeakMap();\n\nvar _metadataPromise = /*#__PURE__*/new WeakMap();\n\nvar WorkerTransport = /*#__PURE__*/function () {\n function WorkerTransport(messageHandler, loadingTask, networkStream, params) {\n _classCallCheck(this, WorkerTransport);\n\n _classPrivateFieldInitSpec(this, _docStats, {\n writable: true,\n value: null\n });\n\n _classPrivateFieldInitSpec(this, _pageCache, {\n writable: true,\n value: new Map()\n });\n\n _classPrivateFieldInitSpec(this, _pagePromises, {\n writable: true,\n value: new Map()\n });\n\n _classPrivateFieldInitSpec(this, _metadataPromise, {\n writable: true,\n value: null\n });\n\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new _font_loader.FontLoader({\n docId: loadingTask.docId,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this._params = params;\n\n if (!params.useWorkerFetch) {\n this.CMapReaderFactory = new params.CMapReaderFactory({\n baseUrl: params.cMapUrl,\n isCompressed: params.cMapPacked\n });\n this.StandardFontDataFactory = new params.StandardFontDataFactory({\n baseUrl: params.standardFontDataUrl\n });\n }\n\n this.destroyed = false;\n this.destroyCapability = null;\n this._passwordCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = (0, _util.createPromiseCapability)();\n this.setupMessageHandler();\n }\n\n _createClass(WorkerTransport, [{\n key: \"annotationStorage\",\n get: function get() {\n return (0, _util.shadow)(this, \"annotationStorage\", new _annotation_storage.AnnotationStorage());\n }\n }, {\n key: \"stats\",\n get: function get() {\n return _classPrivateFieldGet(this, _docStats);\n }\n }, {\n key: \"getRenderingIntent\",\n value: function getRenderingIntent(intent) {\n var annotationMode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _util.AnnotationMode.ENABLE;\n var isOpList = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var renderingIntent = _util.RenderingIntentFlag.DISPLAY;\n var lastModified = \"\";\n\n switch (intent) {\n case \"any\":\n renderingIntent = _util.RenderingIntentFlag.ANY;\n break;\n\n case \"display\":\n break;\n\n case \"print\":\n renderingIntent = _util.RenderingIntentFlag.PRINT;\n break;\n\n default:\n (0, _util.warn)(\"getRenderingIntent - invalid intent: \".concat(intent));\n }\n\n switch (annotationMode) {\n case _util.AnnotationMode.DISABLE:\n renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n\n case _util.AnnotationMode.ENABLE:\n break;\n\n case _util.AnnotationMode.ENABLE_FORMS:\n renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n\n case _util.AnnotationMode.ENABLE_STORAGE:\n renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE;\n lastModified = this.annotationStorage.lastModified;\n break;\n\n default:\n (0, _util.warn)(\"getRenderingIntent - invalid annotationMode: \".concat(annotationMode));\n }\n\n if (isOpList) {\n renderingIntent += _util.RenderingIntentFlag.OPLIST;\n }\n\n return {\n renderingIntent: renderingIntent,\n cacheKey: \"\".concat(renderingIntent, \"_\").concat(lastModified)\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this12 = this;\n\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = (0, _util.createPromiseCapability)();\n\n if (this._passwordCapability) {\n this._passwordCapability.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n }\n\n var waitOn = [];\n\n var _iterator15 = _createForOfIteratorHelper(_classPrivateFieldGet(this, _pageCache).values()),\n _step15;\n\n try {\n for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {\n var page = _step15.value;\n waitOn.push(page._destroy());\n }\n } catch (err) {\n _iterator15.e(err);\n } finally {\n _iterator15.f();\n }\n\n _classPrivateFieldGet(this, _pageCache).clear();\n\n _classPrivateFieldGet(this, _pagePromises).clear();\n\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n\n var terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(function () {\n _this12.commonObjs.clear();\n\n _this12.fontLoader.clear();\n\n _classPrivateFieldSet(_this12, _metadataPromise, null);\n\n _this12._getFieldObjectsPromise = null;\n _this12._hasJSActionsPromise = null;\n\n if (_this12._networkStream) {\n _this12._networkStream.cancelAllRequests(new _util.AbortException(\"Worker was terminated.\"));\n }\n\n if (_this12.messageHandler) {\n _this12.messageHandler.destroy();\n\n _this12.messageHandler = null;\n }\n\n _this12.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n }, {\n key: \"setupMessageHandler\",\n value: function setupMessageHandler() {\n var _this13 = this;\n\n var messageHandler = this.messageHandler,\n loadingTask = this.loadingTask;\n messageHandler.on(\"GetReader\", function (data, sink) {\n (0, _util.assert)(_this13._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n _this13._fullReader = _this13._networkStream.getFullReader();\n\n _this13._fullReader.onProgress = function (evt) {\n _this13._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n\n sink.onPull = function () {\n _this13._fullReader.read().then(function (_ref16) {\n var value = _ref16.value,\n done = _ref16.done;\n\n if (done) {\n sink.close();\n return;\n }\n\n (0, _util.assert)((0, _util.isArrayBuffer)(value), \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })[\"catch\"](function (reason) {\n sink.error(reason);\n });\n };\n\n sink.onCancel = function (reason) {\n _this13._fullReader.cancel(reason);\n\n sink.ready[\"catch\"](function (readyReason) {\n if (_this13.destroyed) {\n return;\n }\n\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", function (data) {\n var headersCapability = (0, _util.createPromiseCapability)();\n var fullReader = _this13._fullReader;\n fullReader.headersReady.then(function () {\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (_this13._lastProgress) {\n var _loadingTask$onProgre;\n\n (_loadingTask$onProgre = loadingTask.onProgress) === null || _loadingTask$onProgre === void 0 ? void 0 : _loadingTask$onProgre.call(loadingTask, _this13._lastProgress);\n }\n\n fullReader.onProgress = function (evt) {\n var _loadingTask$onProgre2;\n\n (_loadingTask$onProgre2 = loadingTask.onProgress) === null || _loadingTask$onProgre2 === void 0 ? void 0 : _loadingTask$onProgre2.call(loadingTask, {\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength\n });\n }, headersCapability.reject);\n return headersCapability.promise;\n });\n messageHandler.on(\"GetRangeReader\", function (data, sink) {\n (0, _util.assert)(_this13._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n\n var rangeReader = _this13._networkStream.getRangeReader(data.begin, data.end);\n\n if (!rangeReader) {\n sink.close();\n return;\n }\n\n sink.onPull = function () {\n rangeReader.read().then(function (_ref17) {\n var value = _ref17.value,\n done = _ref17.done;\n\n if (done) {\n sink.close();\n return;\n }\n\n (0, _util.assert)((0, _util.isArrayBuffer)(value), \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })[\"catch\"](function (reason) {\n sink.error(reason);\n });\n };\n\n sink.onCancel = function (reason) {\n rangeReader.cancel(reason);\n sink.ready[\"catch\"](function (readyReason) {\n if (_this13.destroyed) {\n return;\n }\n\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", function (_ref18) {\n var pdfInfo = _ref18.pdfInfo;\n _this13._numPages = pdfInfo.numPages;\n _this13._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, _this13));\n });\n messageHandler.on(\"DocException\", function (ex) {\n var reason;\n\n switch (ex.name) {\n case \"PasswordException\":\n reason = new _util.PasswordException(ex.message, ex.code);\n break;\n\n case \"InvalidPDFException\":\n reason = new _util.InvalidPDFException(ex.message);\n break;\n\n case \"MissingPDFException\":\n reason = new _util.MissingPDFException(ex.message);\n break;\n\n case \"UnexpectedResponseException\":\n reason = new _util.UnexpectedResponseException(ex.message, ex.status);\n break;\n\n case \"UnknownErrorException\":\n reason = new _util.UnknownErrorException(ex.message, ex.details);\n break;\n\n default:\n (0, _util.unreachable)(\"DocException - expected a valid Error.\");\n }\n\n loadingTask._capability.reject(reason);\n });\n messageHandler.on(\"PasswordRequest\", function (exception) {\n _this13._passwordCapability = (0, _util.createPromiseCapability)();\n\n if (loadingTask.onPassword) {\n var updatePassword = function updatePassword(password) {\n _this13._passwordCapability.resolve({\n password: password\n });\n };\n\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n _this13._passwordCapability.reject(ex);\n }\n } else {\n _this13._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));\n }\n\n return _this13._passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", function (data) {\n var _loadingTask$onProgre3;\n\n (_loadingTask$onProgre3 = loadingTask.onProgress) === null || _loadingTask$onProgre3 === void 0 ? void 0 : _loadingTask$onProgre3.call(loadingTask, {\n loaded: data.length,\n total: data.length\n });\n\n _this13.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", function (data) {\n if (_this13.destroyed) {\n return;\n }\n\n var page = _classPrivateFieldGet(_this13, _pageCache).get(data.pageIndex);\n\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", function (_ref19) {\n var _globalThis$FontInspe;\n\n var _ref20 = _slicedToArray(_ref19, 3),\n id = _ref20[0],\n type = _ref20[1],\n exportedData = _ref20[2];\n\n if (_this13.destroyed) {\n return;\n }\n\n if (_this13.commonObjs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Font\":\n var params = _this13._params;\n\n if (\"error\" in exportedData) {\n var exportedError = exportedData.error;\n (0, _util.warn)(\"Error during font loading: \".concat(exportedError));\n\n _this13.commonObjs.resolve(id, exportedError);\n\n break;\n }\n\n var fontRegistry = null;\n\n if (params.pdfBug && (_globalThis$FontInspe = globalThis.FontInspector) !== null && _globalThis$FontInspe !== void 0 && _globalThis$FontInspe.enabled) {\n fontRegistry = {\n registerFont: function registerFont(font, url) {\n globalThis.FontInspector.fontAdded(font, url);\n }\n };\n }\n\n var font = new _font_loader.FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n onUnsupportedFeature: _this13._onUnsupportedFeature.bind(_this13),\n fontRegistry: fontRegistry\n });\n\n _this13.fontLoader.bind(font)[\"catch\"](function (reason) {\n return messageHandler.sendWithPromise(\"FontFallback\", {\n id: id\n });\n })[\"finally\"](function () {\n if (!params.fontExtraProperties && font.data) {\n font.data = null;\n }\n\n _this13.commonObjs.resolve(id, font);\n });\n\n break;\n\n case \"FontPath\":\n case \"Image\":\n _this13.commonObjs.resolve(id, exportedData);\n\n break;\n\n default:\n throw new Error(\"Got unknown common object type \".concat(type));\n }\n });\n messageHandler.on(\"obj\", function (_ref21) {\n var _imageData$data;\n\n var _ref22 = _slicedToArray(_ref21, 4),\n id = _ref22[0],\n pageIndex = _ref22[1],\n type = _ref22[2],\n imageData = _ref22[3];\n\n if (_this13.destroyed) {\n return;\n }\n\n var pageProxy = _classPrivateFieldGet(_this13, _pageCache).get(pageIndex);\n\n if (pageProxy.objs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n var MAX_IMAGE_SIZE_TO_STORE = 8000000;\n\n if ((imageData === null || imageData === void 0 ? void 0 : (_imageData$data = imageData.data) === null || _imageData$data === void 0 ? void 0 : _imageData$data.length) > MAX_IMAGE_SIZE_TO_STORE) {\n pageProxy.cleanupAfterRender = true;\n }\n\n break;\n\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n\n default:\n throw new Error(\"Got unknown object type \".concat(type));\n }\n });\n messageHandler.on(\"DocProgress\", function (data) {\n var _loadingTask$onProgre4;\n\n if (_this13.destroyed) {\n return;\n }\n\n (_loadingTask$onProgre4 = loadingTask.onProgress) === null || _loadingTask$onProgre4 === void 0 ? void 0 : _loadingTask$onProgre4.call(loadingTask, {\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"DocStats\", function (data) {\n if (_this13.destroyed) {\n return;\n }\n\n _classPrivateFieldSet(_this13, _docStats, Object.freeze({\n streamTypes: Object.freeze(data.streamTypes),\n fontTypes: Object.freeze(data.fontTypes)\n }));\n });\n messageHandler.on(\"UnsupportedFeature\", this._onUnsupportedFeature.bind(this));\n messageHandler.on(\"FetchBuiltInCMap\", function (data) {\n if (_this13.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n\n if (!_this13.CMapReaderFactory) {\n return Promise.reject(new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"));\n }\n\n return _this13.CMapReaderFactory.fetch(data);\n });\n messageHandler.on(\"FetchStandardFontData\", function (data) {\n if (_this13.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n\n if (!_this13.StandardFontDataFactory) {\n return Promise.reject(new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"));\n }\n\n return _this13.StandardFontDataFactory.fetch(data);\n });\n }\n }, {\n key: \"_onUnsupportedFeature\",\n value: function _onUnsupportedFeature(_ref23) {\n var _this$loadingTask$onU, _this$loadingTask;\n\n var featureId = _ref23.featureId;\n\n if (this.destroyed) {\n return;\n }\n\n (_this$loadingTask$onU = (_this$loadingTask = this.loadingTask).onUnsupportedFeature) === null || _this$loadingTask$onU === void 0 ? void 0 : _this$loadingTask$onU.call(_this$loadingTask, featureId);\n }\n }, {\n key: \"getData\",\n value: function getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n }, {\n key: \"getPage\",\n value: function getPage(pageNumber) {\n var _this14 = this;\n\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request\"));\n }\n\n var pageIndex = pageNumber - 1,\n cachedPromise = _classPrivateFieldGet(this, _pagePromises).get(pageIndex);\n\n if (cachedPromise) {\n return cachedPromise;\n }\n\n var promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex: pageIndex\n }).then(function (pageInfo) {\n if (_this14.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n\n var page = new PDFPageProxy(pageIndex, pageInfo, _this14, _this14._params.ownerDocument, _this14._params.pdfBug);\n\n _classPrivateFieldGet(_this14, _pageCache).set(pageIndex, page);\n\n return page;\n });\n\n _classPrivateFieldGet(this, _pagePromises).set(pageIndex, promise);\n\n return promise;\n }\n }, {\n key: \"getPageIndex\",\n value: function getPageIndex(ref) {\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n ref: ref\n });\n }\n }, {\n key: \"getAnnotations\",\n value: function getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex: pageIndex,\n intent: intent\n });\n }\n }, {\n key: \"saveDocument\",\n value: function saveDocument() {\n var _this$_fullReader$fil,\n _this$_fullReader,\n _this15 = this;\n\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: this.annotationStorage.serializable,\n filename: (_this$_fullReader$fil = (_this$_fullReader = this._fullReader) === null || _this$_fullReader === void 0 ? void 0 : _this$_fullReader.filename) !== null && _this$_fullReader$fil !== void 0 ? _this$_fullReader$fil : null\n })[\"finally\"](function () {\n _this15.annotationStorage.resetModified();\n });\n }\n }, {\n key: \"getFieldObjects\",\n value: function getFieldObjects() {\n return this._getFieldObjectsPromise || (this._getFieldObjectsPromise = this.messageHandler.sendWithPromise(\"GetFieldObjects\", null));\n }\n }, {\n key: \"hasJSActions\",\n value: function hasJSActions() {\n return this._hasJSActionsPromise || (this._hasJSActionsPromise = this.messageHandler.sendWithPromise(\"HasJSActions\", null));\n }\n }, {\n key: \"getCalculationOrderIds\",\n value: function getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n }, {\n key: \"getDestinations\",\n value: function getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n }, {\n key: \"getDestination\",\n value: function getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id: id\n });\n }\n }, {\n key: \"getPageLabels\",\n value: function getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n }, {\n key: \"getPageLayout\",\n value: function getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n }, {\n key: \"getPageMode\",\n value: function getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n }, {\n key: \"getViewerPreferences\",\n value: function getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n }, {\n key: \"getOpenAction\",\n value: function getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n }, {\n key: \"getAttachments\",\n value: function getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n }, {\n key: \"getJavaScript\",\n value: function getJavaScript() {\n return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n }\n }, {\n key: \"getDocJSActions\",\n value: function getDocJSActions() {\n return this.messageHandler.sendWithPromise(\"GetDocJSActions\", null);\n }\n }, {\n key: \"getPageJSActions\",\n value: function getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex: pageIndex\n });\n }\n }, {\n key: \"getStructTree\",\n value: function getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex: pageIndex\n });\n }\n }, {\n key: \"getOutline\",\n value: function getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n }, {\n key: \"getOptionalContentConfig\",\n value: function getOptionalContentConfig() {\n return this.messageHandler.sendWithPromise(\"GetOptionalContentConfig\", null).then(function (results) {\n return new _optional_content_config.OptionalContentConfig(results);\n });\n }\n }, {\n key: \"getPermissions\",\n value: function getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n }, {\n key: \"getMetadata\",\n value: function getMetadata() {\n var _this16 = this;\n\n return _classPrivateFieldGet(this, _metadataPromise) || _classPrivateFieldSet(this, _metadataPromise, this.messageHandler.sendWithPromise(\"GetMetadata\", null).then(function (results) {\n var _this16$_fullReader$f, _this16$_fullReader, _this16$_fullReader$c, _this16$_fullReader2;\n\n return {\n info: results[0],\n metadata: results[1] ? new _metadata.Metadata(results[1]) : null,\n contentDispositionFilename: (_this16$_fullReader$f = (_this16$_fullReader = _this16._fullReader) === null || _this16$_fullReader === void 0 ? void 0 : _this16$_fullReader.filename) !== null && _this16$_fullReader$f !== void 0 ? _this16$_fullReader$f : null,\n contentLength: (_this16$_fullReader$c = (_this16$_fullReader2 = _this16._fullReader) === null || _this16$_fullReader2 === void 0 ? void 0 : _this16$_fullReader2.contentLength) !== null && _this16$_fullReader$c !== void 0 ? _this16$_fullReader$c : null\n };\n }));\n }\n }, {\n key: \"getMarkInfo\",\n value: function getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n }, {\n key: \"startCleanup\",\n value: function () {\n var _startCleanup = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee5() {\n var keepLoadedFonts,\n _iterator16,\n _step16,\n page,\n cleanupSuccessful,\n _args5 = arguments;\n\n return _regenerator[\"default\"].wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n keepLoadedFonts = _args5.length > 0 && _args5[0] !== undefined ? _args5[0] : false;\n _context5.next = 3;\n return this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n case 3:\n if (!this.destroyed) {\n _context5.next = 5;\n break;\n }\n\n return _context5.abrupt(\"return\");\n\n case 5:\n _iterator16 = _createForOfIteratorHelper(_classPrivateFieldGet(this, _pageCache).values());\n _context5.prev = 6;\n\n _iterator16.s();\n\n case 8:\n if ((_step16 = _iterator16.n()).done) {\n _context5.next = 15;\n break;\n }\n\n page = _step16.value;\n cleanupSuccessful = page.cleanup();\n\n if (cleanupSuccessful) {\n _context5.next = 13;\n break;\n }\n\n throw new Error(\"startCleanup: Page \".concat(page.pageNumber, \" is currently rendering.\"));\n\n case 13:\n _context5.next = 8;\n break;\n\n case 15:\n _context5.next = 20;\n break;\n\n case 17:\n _context5.prev = 17;\n _context5.t0 = _context5[\"catch\"](6);\n\n _iterator16.e(_context5.t0);\n\n case 20:\n _context5.prev = 20;\n\n _iterator16.f();\n\n return _context5.finish(20);\n\n case 23:\n this.commonObjs.clear();\n\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n\n _classPrivateFieldSet(this, _metadataPromise, null);\n\n this._getFieldObjectsPromise = null;\n this._hasJSActionsPromise = null;\n\n case 28:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this, [[6, 17, 20, 23]]);\n }));\n\n function startCleanup() {\n return _startCleanup.apply(this, arguments);\n }\n\n return startCleanup;\n }()\n }, {\n key: \"loadingParams\",\n get: function get() {\n var params = this._params;\n return (0, _util.shadow)(this, \"loadingParams\", {\n disableAutoFetch: params.disableAutoFetch,\n enableXfa: params.enableXfa\n });\n }\n }]);\n\n return WorkerTransport;\n}();\n\nvar PDFObjects = /*#__PURE__*/function () {\n function PDFObjects() {\n _classCallCheck(this, PDFObjects);\n\n this._objs = Object.create(null);\n }\n\n _createClass(PDFObjects, [{\n key: \"_ensureObj\",\n value: function _ensureObj(objId) {\n if (this._objs[objId]) {\n return this._objs[objId];\n }\n\n return this._objs[objId] = {\n capability: (0, _util.createPromiseCapability)(),\n data: null,\n resolved: false\n };\n }\n }, {\n key: \"get\",\n value: function get(objId) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (callback) {\n this._ensureObj(objId).capability.promise.then(callback);\n\n return null;\n }\n\n var obj = this._objs[objId];\n\n if (!obj || !obj.resolved) {\n throw new Error(\"Requesting object that isn't resolved yet \".concat(objId, \".\"));\n }\n\n return obj.data;\n }\n }, {\n key: \"has\",\n value: function has(objId) {\n var obj = this._objs[objId];\n return (obj === null || obj === void 0 ? void 0 : obj.resolved) || false;\n }\n }, {\n key: \"resolve\",\n value: function resolve(objId, data) {\n var obj = this._ensureObj(objId);\n\n obj.resolved = true;\n obj.data = data;\n obj.capability.resolve(data);\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this._objs = Object.create(null);\n }\n }]);\n\n return PDFObjects;\n}();\n\nvar RenderTask = /*#__PURE__*/function () {\n function RenderTask(internalRenderTask) {\n _classCallCheck(this, RenderTask);\n\n this._internalRenderTask = internalRenderTask;\n this.onContinue = null;\n }\n\n _createClass(RenderTask, [{\n key: \"promise\",\n get: function get() {\n return this._internalRenderTask.capability.promise;\n }\n }, {\n key: \"cancel\",\n value: function cancel() {\n this._internalRenderTask.cancel();\n }\n }]);\n\n return RenderTask;\n}();\n\nexports.RenderTask = RenderTask;\n\nvar InternalRenderTask = /*#__PURE__*/function () {\n function InternalRenderTask(_ref24) {\n var callback = _ref24.callback,\n params = _ref24.params,\n objs = _ref24.objs,\n commonObjs = _ref24.commonObjs,\n annotationCanvasMap = _ref24.annotationCanvasMap,\n operatorList = _ref24.operatorList,\n pageIndex = _ref24.pageIndex,\n canvasFactory = _ref24.canvasFactory,\n _ref24$useRequestAnim = _ref24.useRequestAnimationFrame,\n useRequestAnimationFrame = _ref24$useRequestAnim === void 0 ? false : _ref24$useRequestAnim,\n _ref24$pdfBug = _ref24.pdfBug,\n pdfBug = _ref24$pdfBug === void 0 ? false : _ref24$pdfBug;\n\n _classCallCheck(this, InternalRenderTask);\n\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this._pdfBug = pdfBug;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = (0, _util.createPromiseCapability)();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n\n _createClass(InternalRenderTask, [{\n key: \"completed\",\n get: function get() {\n return this.capability.promise[\"catch\"](function () {});\n }\n }, {\n key: \"initializeGraphics\",\n value: function initializeGraphics(_ref25) {\n var _globalThis$StepperMa;\n\n var _ref25$transparency = _ref25.transparency,\n transparency = _ref25$transparency === void 0 ? false : _ref25$transparency,\n optionalContentConfig = _ref25.optionalContentConfig;\n\n if (this.cancelled) {\n return;\n }\n\n if (this._canvas) {\n if (InternalRenderTask.canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n\n InternalRenderTask.canvasInUse.add(this._canvas);\n }\n\n if (this._pdfBug && (_globalThis$StepperMa = globalThis.StepperManager) !== null && _globalThis$StepperMa !== void 0 && _globalThis$StepperMa.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n\n var _this$params = this.params,\n canvasContext = _this$params.canvasContext,\n viewport = _this$params.viewport,\n transform = _this$params.transform,\n imageLayer = _this$params.imageLayer,\n background = _this$params.background;\n this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, imageLayer, optionalContentConfig, this.annotationCanvasMap);\n this.gfx.beginDrawing({\n transform: transform,\n viewport: viewport,\n transparency: transparency,\n background: background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n\n if (this.graphicsReadyCallback) {\n this.graphicsReadyCallback();\n }\n }\n }, {\n key: \"cancel\",\n value: function cancel() {\n var error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n this.running = false;\n this.cancelled = true;\n\n if (this.gfx) {\n this.gfx.endDrawing();\n }\n\n if (this._canvas) {\n InternalRenderTask.canvasInUse[\"delete\"](this._canvas);\n }\n\n this.callback(error || new _display_utils.RenderingCancelledException(\"Rendering cancelled, page \".concat(this._pageIndex + 1), \"canvas\"));\n }\n }, {\n key: \"operatorListChanged\",\n value: function operatorListChanged() {\n if (!this.graphicsReady) {\n if (!this.graphicsReadyCallback) {\n this.graphicsReadyCallback = this._continueBound;\n }\n\n return;\n }\n\n if (this.stepper) {\n this.stepper.updateOperatorList(this.operatorList);\n }\n\n if (this.running) {\n return;\n }\n\n this._continue();\n }\n }, {\n key: \"_continue\",\n value: function _continue() {\n this.running = true;\n\n if (this.cancelled) {\n return;\n }\n\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n }, {\n key: \"_scheduleNext\",\n value: function _scheduleNext() {\n var _this17 = this;\n\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(function () {\n _this17._nextBound()[\"catch\"](_this17._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound)[\"catch\"](this._cancelBound);\n }\n }\n }, {\n key: \"_next\",\n value: function () {\n var _next2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee6() {\n return _regenerator[\"default\"].wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n if (!this.cancelled) {\n _context6.next = 2;\n break;\n }\n\n return _context6.abrupt(\"return\");\n\n case 2:\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n\n if (this._canvas) {\n InternalRenderTask.canvasInUse[\"delete\"](this._canvas);\n }\n\n this.callback();\n }\n }\n\n case 4:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function _next() {\n return _next2.apply(this, arguments);\n }\n\n return _next;\n }()\n }], [{\n key: \"canvasInUse\",\n get: function get() {\n return (0, _util.shadow)(this, \"canvasInUse\", new WeakSet());\n }\n }]);\n\n return InternalRenderTask;\n}();\n\nvar version = '2.12.313';\nexports.version = version;\nvar build = 'a2ae56f39';\nexports.build = build;\n\n/***/ }),\n/* 137 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.FontLoader = exports.FontFaceObject = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(4);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar BaseFontLoader = /*#__PURE__*/function () {\n function BaseFontLoader(_ref) {\n var docId = _ref.docId,\n onUnsupportedFeature = _ref.onUnsupportedFeature,\n _ref$ownerDocument = _ref.ownerDocument,\n ownerDocument = _ref$ownerDocument === void 0 ? globalThis.document : _ref$ownerDocument,\n _ref$styleElement = _ref.styleElement,\n styleElement = _ref$styleElement === void 0 ? null : _ref$styleElement;\n\n _classCallCheck(this, BaseFontLoader);\n\n if (this.constructor === BaseFontLoader) {\n (0, _util.unreachable)(\"Cannot initialize BaseFontLoader.\");\n }\n\n this.docId = docId;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this._document = ownerDocument;\n this.nativeFontFaces = [];\n this.styleElement = null;\n }\n\n _createClass(BaseFontLoader, [{\n key: \"addNativeFontFace\",\n value: function addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.push(nativeFontFace);\n\n this._document.fonts.add(nativeFontFace);\n }\n }, {\n key: \"insertRule\",\n value: function insertRule(rule) {\n var styleElement = this.styleElement;\n\n if (!styleElement) {\n styleElement = this.styleElement = this._document.createElement(\"style\");\n styleElement.id = \"PDFJS_FONT_STYLE_TAG_\".concat(this.docId);\n\n this._document.documentElement.getElementsByTagName(\"head\")[0].appendChild(styleElement);\n }\n\n var styleSheet = styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n }, {\n key: \"clear\",\n value: function clear() {\n var _iterator = _createForOfIteratorHelper(this.nativeFontFaces),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var nativeFontFace = _step.value;\n\n this._document.fonts[\"delete\"](nativeFontFace);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n this.nativeFontFaces.length = 0;\n\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n }, {\n key: \"bind\",\n value: function () {\n var _bind = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(font) {\n var _this = this;\n\n var nativeFontFace, rule;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(font.attached || font.missingFile)) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 2:\n font.attached = true;\n\n if (!this.isFontLoadingAPISupported) {\n _context.next = 19;\n break;\n }\n\n nativeFontFace = font.createNativeFontFace();\n\n if (!nativeFontFace) {\n _context.next = 18;\n break;\n }\n\n this.addNativeFontFace(nativeFontFace);\n _context.prev = 7;\n _context.next = 10;\n return nativeFontFace.loaded;\n\n case 10:\n _context.next = 18;\n break;\n\n case 12:\n _context.prev = 12;\n _context.t0 = _context[\"catch\"](7);\n\n this._onUnsupportedFeature({\n featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative\n });\n\n (0, _util.warn)(\"Failed to load font '\".concat(nativeFontFace.family, \"': '\").concat(_context.t0, \"'.\"));\n font.disableFontFace = true;\n throw _context.t0;\n\n case 18:\n return _context.abrupt(\"return\");\n\n case 19:\n rule = font.createFontFaceRule();\n\n if (!rule) {\n _context.next = 26;\n break;\n }\n\n this.insertRule(rule);\n\n if (!this.isSyncFontLoadingSupported) {\n _context.next = 24;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 24:\n _context.next = 26;\n return new Promise(function (resolve) {\n var request = _this._queueLoadingCallback(resolve);\n\n _this._prepareFontLoadEvent([rule], [font], request);\n });\n\n case 26:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[7, 12]]);\n }));\n\n function bind(_x) {\n return _bind.apply(this, arguments);\n }\n\n return bind;\n }()\n }, {\n key: \"_queueLoadingCallback\",\n value: function _queueLoadingCallback(callback) {\n (0, _util.unreachable)(\"Abstract method `_queueLoadingCallback`.\");\n }\n }, {\n key: \"isFontLoadingAPISupported\",\n get: function get() {\n var _this$_document;\n\n var hasFonts = !!((_this$_document = this._document) !== null && _this$_document !== void 0 && _this$_document.fonts);\n return (0, _util.shadow)(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n }, {\n key: \"isSyncFontLoadingSupported\",\n get: function get() {\n (0, _util.unreachable)(\"Abstract method `isSyncFontLoadingSupported`.\");\n }\n }, {\n key: \"_loadTestFont\",\n get: function get() {\n (0, _util.unreachable)(\"Abstract method `_loadTestFont`.\");\n }\n }, {\n key: \"_prepareFontLoadEvent\",\n value: function _prepareFontLoadEvent(rules, fontsToLoad, request) {\n (0, _util.unreachable)(\"Abstract method `_prepareFontLoadEvent`.\");\n }\n }]);\n\n return BaseFontLoader;\n}();\n\nvar FontLoader;\nexports.FontLoader = FontLoader;\n{\n exports.FontLoader = FontLoader = /*#__PURE__*/function (_BaseFontLoader) {\n _inherits(GenericFontLoader, _BaseFontLoader);\n\n var _super = _createSuper(GenericFontLoader);\n\n function GenericFontLoader(params) {\n var _this2;\n\n _classCallCheck(this, GenericFontLoader);\n\n _this2 = _super.call(this, params);\n _this2.loadingContext = {\n requests: [],\n nextRequestId: 0\n };\n _this2.loadTestFontId = 0;\n return _this2;\n }\n\n _createClass(GenericFontLoader, [{\n key: \"isSyncFontLoadingSupported\",\n get: function get() {\n var supported = false;\n\n if (typeof navigator === \"undefined\") {\n supported = true;\n } else {\n var m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(navigator.userAgent);\n\n if ((m === null || m === void 0 ? void 0 : m[1]) >= 14) {\n supported = true;\n }\n }\n\n return (0, _util.shadow)(this, \"isSyncFontLoadingSupported\", supported);\n }\n }, {\n key: \"_queueLoadingCallback\",\n value: function _queueLoadingCallback(callback) {\n function completeRequest() {\n (0, _util.assert)(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n\n while (context.requests.length > 0 && context.requests[0].done) {\n var otherRequest = context.requests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n var context = this.loadingContext;\n var request = {\n id: \"pdfjs-font-loading-\".concat(context.nextRequestId++),\n done: false,\n complete: completeRequest,\n callback: callback\n };\n context.requests.push(request);\n return request;\n }\n }, {\n key: \"_loadTestFont\",\n get: function get() {\n var getLoadTestFont = function getLoadTestFont() {\n return atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n };\n\n return (0, _util.shadow)(this, \"_loadTestFont\", getLoadTestFont());\n }\n }, {\n key: \"_prepareFontLoadEvent\",\n value: function _prepareFontLoadEvent(rules, fonts, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n\n function spliceString(s, offset, remove, insert) {\n var chunk1 = s.substring(0, offset);\n var chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n\n var i, ii;\n\n var canvas = this._document.createElement(\"canvas\");\n\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext(\"2d\");\n var called = 0;\n\n function isFontReady(name, callback) {\n called++;\n\n if (called > 30) {\n (0, _util.warn)(\"Load test font never loaded.\");\n callback();\n return;\n }\n\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n var imageData = ctx.getImageData(0, 0, 1, 1);\n\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n\n setTimeout(isFontReady.bind(null, name, callback));\n }\n\n var loadTestFontId = \"lt\".concat(Date.now()).concat(this.loadTestFontId++);\n var data = this._loadTestFont;\n var COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n var CFF_CHECKSUM_OFFSET = 16;\n var XXXX_VALUE = 0x58585858;\n var checksum = int32(data, CFF_CHECKSUM_OFFSET);\n\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));\n var url = \"url(data:font/opentype;base64,\".concat(btoa(data), \");\");\n var rule = \"@font-face {font-family:\\\"\".concat(loadTestFontId, \"\\\";src:\").concat(url, \"}\");\n this.insertRule(rule);\n var names = [];\n\n var _iterator2 = _createForOfIteratorHelper(fonts),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var font = _step2.value;\n names.push(font.loadedName);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n names.push(loadTestFontId);\n\n var div = this._document.createElement(\"div\");\n\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n\n for (var _i = 0, _names = names; _i < _names.length; _i++) {\n var name = _names[_i];\n\n var span = this._document.createElement(\"span\");\n\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.appendChild(span);\n }\n\n this._document.body.appendChild(div);\n\n isFontReady(loadTestFontId, function () {\n div.remove();\n request.complete();\n });\n }\n }]);\n\n return GenericFontLoader;\n }(BaseFontLoader);\n}\n\nvar FontFaceObject = /*#__PURE__*/function () {\n function FontFaceObject(translatedData, _ref2) {\n var _ref2$isEvalSupported = _ref2.isEvalSupported,\n isEvalSupported = _ref2$isEvalSupported === void 0 ? true : _ref2$isEvalSupported,\n _ref2$disableFontFace = _ref2.disableFontFace,\n disableFontFace = _ref2$disableFontFace === void 0 ? false : _ref2$disableFontFace,\n _ref2$ignoreErrors = _ref2.ignoreErrors,\n ignoreErrors = _ref2$ignoreErrors === void 0 ? false : _ref2$ignoreErrors,\n onUnsupportedFeature = _ref2.onUnsupportedFeature,\n _ref2$fontRegistry = _ref2.fontRegistry,\n fontRegistry = _ref2$fontRegistry === void 0 ? null : _ref2$fontRegistry;\n\n _classCallCheck(this, FontFaceObject);\n\n this.compiledGlyphs = Object.create(null);\n\n for (var i in translatedData) {\n this[i] = translatedData[i];\n }\n\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this.fontRegistry = fontRegistry;\n }\n\n _createClass(FontFaceObject, [{\n key: \"createNativeFontFace\",\n value: function createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n\n var nativeFontFace;\n\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n var css = {\n weight: this.cssFontInfo.fontWeight\n };\n\n if (this.cssFontInfo.italicAngle) {\n css.style = \"oblique \".concat(this.cssFontInfo.italicAngle, \"deg\");\n }\n\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this);\n }\n\n return nativeFontFace;\n }\n }, {\n key: \"createFontFaceRule\",\n value: function createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n\n var data = (0, _util.bytesToString)(this.data);\n var url = \"url(data:\".concat(this.mimetype, \";base64,\").concat(btoa(data), \");\");\n var rule;\n\n if (!this.cssFontInfo) {\n rule = \"@font-face {font-family:\\\"\".concat(this.loadedName, \"\\\";src:\").concat(url, \"}\");\n } else {\n var css = \"font-weight: \".concat(this.cssFontInfo.fontWeight, \";\");\n\n if (this.cssFontInfo.italicAngle) {\n css += \"font-style: oblique \".concat(this.cssFontInfo.italicAngle, \"deg;\");\n }\n\n rule = \"@font-face {font-family:\\\"\".concat(this.cssFontInfo.fontFamily, \"\\\";\").concat(css, \"src:\").concat(url, \"}\");\n }\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this, url);\n }\n\n return rule;\n }\n }, {\n key: \"getPathGenerator\",\n value: function getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n\n var cmds;\n\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n\n this._onUnsupportedFeature({\n featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath\n });\n\n (0, _util.warn)(\"getPathGenerator - ignoring character: \\\"\".concat(ex, \"\\\".\"));\n return this.compiledGlyphs[character] = function (c, size) {};\n }\n\n if (this.isEvalSupported && _util.IsEvalSupportedCached.value) {\n var jsBuf = [];\n\n var _iterator3 = _createForOfIteratorHelper(cmds),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var current = _step3.value;\n var args = current.args !== undefined ? current.args.join(\",\") : \"\";\n jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n return this.compiledGlyphs[character] = new Function(\"c\", \"size\", jsBuf.join(\"\"));\n }\n\n return this.compiledGlyphs[character] = function (c, size) {\n var _iterator4 = _createForOfIteratorHelper(cmds),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _current = _step4.value;\n\n if (_current.cmd === \"scale\") {\n _current.args = [size, -size];\n }\n\n c[_current.cmd].apply(c, _current.args);\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n };\n }\n }]);\n\n return FontFaceObject;\n}();\n\nexports.FontFaceObject = FontFaceObject;\n\n/***/ }),\n/* 138 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.NodeStandardFontDataFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0;\n\nvar _base_factory = __w_pdfjs_require__(135);\n\nvar _is_node = __w_pdfjs_require__(6);\n\nvar _util = __w_pdfjs_require__(4);\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar NodeCanvasFactory = function NodeCanvasFactory() {\n _classCallCheck(this, NodeCanvasFactory);\n\n (0, _util.unreachable)(\"Not implemented: NodeCanvasFactory\");\n};\n\nexports.NodeCanvasFactory = NodeCanvasFactory;\n\nvar NodeCMapReaderFactory = function NodeCMapReaderFactory() {\n _classCallCheck(this, NodeCMapReaderFactory);\n\n (0, _util.unreachable)(\"Not implemented: NodeCMapReaderFactory\");\n};\n\nexports.NodeCMapReaderFactory = NodeCMapReaderFactory;\n\nvar NodeStandardFontDataFactory = function NodeStandardFontDataFactory() {\n _classCallCheck(this, NodeStandardFontDataFactory);\n\n (0, _util.unreachable)(\"Not implemented: NodeStandardFontDataFactory\");\n};\n\nexports.NodeStandardFontDataFactory = NodeStandardFontDataFactory;\n\nif (_is_node.isNodeJS) {\n var fetchData = function fetchData(url) {\n return new Promise(function (resolve, reject) {\n var fs = require(\"fs\");\n\n fs.readFile(url, function (error, data) {\n if (error || !data) {\n reject(new Error(error));\n return;\n }\n\n resolve(new Uint8Array(data));\n });\n });\n };\n\n exports.NodeCanvasFactory = NodeCanvasFactory = /*#__PURE__*/function (_BaseCanvasFactory) {\n _inherits(NodeCanvasFactory, _BaseCanvasFactory);\n\n var _super = _createSuper(NodeCanvasFactory);\n\n function NodeCanvasFactory() {\n _classCallCheck(this, NodeCanvasFactory);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(NodeCanvasFactory, [{\n key: \"_createCanvas\",\n value: function _createCanvas(width, height) {\n var Canvas = require(\"canvas\");\n\n return Canvas.createCanvas(width, height);\n }\n }]);\n\n return NodeCanvasFactory;\n }(_base_factory.BaseCanvasFactory);\n\n exports.NodeCMapReaderFactory = NodeCMapReaderFactory = /*#__PURE__*/function (_BaseCMapReaderFactor) {\n _inherits(NodeCMapReaderFactory, _BaseCMapReaderFactor);\n\n var _super2 = _createSuper(NodeCMapReaderFactory);\n\n function NodeCMapReaderFactory() {\n _classCallCheck(this, NodeCMapReaderFactory);\n\n return _super2.apply(this, arguments);\n }\n\n _createClass(NodeCMapReaderFactory, [{\n key: \"_fetchData\",\n value: function _fetchData(url, compressionType) {\n return fetchData(url).then(function (data) {\n return {\n cMapData: data,\n compressionType: compressionType\n };\n });\n }\n }]);\n\n return NodeCMapReaderFactory;\n }(_base_factory.BaseCMapReaderFactory);\n\n exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory = /*#__PURE__*/function (_BaseStandardFontData) {\n _inherits(NodeStandardFontDataFactory, _BaseStandardFontData);\n\n var _super3 = _createSuper(NodeStandardFontDataFactory);\n\n function NodeStandardFontDataFactory() {\n _classCallCheck(this, NodeStandardFontDataFactory);\n\n return _super3.apply(this, arguments);\n }\n\n _createClass(NodeStandardFontDataFactory, [{\n key: \"_fetchData\",\n value: function _fetchData(url) {\n return fetchData(url);\n }\n }]);\n\n return NodeStandardFontDataFactory;\n }(_base_factory.BaseStandardFontDataFactory);\n}\n\n/***/ }),\n/* 139 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.AnnotationStorage = void 0;\n\nvar _util = __w_pdfjs_require__(4);\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar AnnotationStorage = /*#__PURE__*/function () {\n function AnnotationStorage() {\n _classCallCheck(this, AnnotationStorage);\n\n this._storage = new Map();\n this._timeStamp = Date.now();\n this._modified = false;\n this.onSetModified = null;\n this.onResetModified = null;\n }\n\n _createClass(AnnotationStorage, [{\n key: \"getValue\",\n value: function getValue(key, defaultValue) {\n var value = this._storage.get(key);\n\n if (value === undefined) {\n return defaultValue;\n }\n\n return Object.assign(defaultValue, value);\n }\n }, {\n key: \"setValue\",\n value: function setValue(key, value) {\n var obj = this._storage.get(key);\n\n var modified = false;\n\n if (obj !== undefined) {\n for (var _i = 0, _Object$entries = Object.entries(value); _i < _Object$entries.length; _i++) {\n var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),\n entry = _Object$entries$_i[0],\n val = _Object$entries$_i[1];\n\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n\n this._storage.set(key, value);\n }\n\n if (modified) {\n this._timeStamp = Date.now();\n\n this._setModified();\n }\n }\n }, {\n key: \"getAll\",\n value: function getAll() {\n return this._storage.size > 0 ? (0, _util.objectFromMap)(this._storage) : null;\n }\n }, {\n key: \"size\",\n get: function get() {\n return this._storage.size;\n }\n }, {\n key: \"_setModified\",\n value: function _setModified() {\n if (!this._modified) {\n this._modified = true;\n\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n }, {\n key: \"resetModified\",\n value: function resetModified() {\n if (this._modified) {\n this._modified = false;\n\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n }, {\n key: \"serializable\",\n get: function get() {\n return this._storage.size > 0 ? this._storage : null;\n }\n }, {\n key: \"lastModified\",\n get: function get() {\n return this._timeStamp.toString();\n }\n }]);\n\n return AnnotationStorage;\n}();\n\nexports.AnnotationStorage = AnnotationStorage;\n\n/***/ }),\n/* 140 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.CanvasGraphics = void 0;\n\nvar _util = __w_pdfjs_require__(4);\n\nvar _pattern_helper = __w_pdfjs_require__(141);\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar MIN_FONT_SIZE = 16;\nvar MAX_FONT_SIZE = 100;\nvar MAX_GROUP_SIZE = 4096;\nvar EXECUTION_TIME = 15;\nvar EXECUTION_STEPS = 10;\nvar COMPILE_TYPE3_GLYPHS = true;\nvar MAX_SIZE_TO_COMPILE = 1000;\nvar FULL_CHUNK_HEIGHT = 16;\nvar LINEWIDTH_SCALE_FACTOR = 1.000001;\n\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n\n ctx._removeMirroring = function () {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n\n ctx.save = function ctxSave() {\n destCtx.save();\n\n this.__originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n\n this.__originalRestore();\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n\n this.__originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n\n this.__originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n\n this.__originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n\n this.__originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n\n this.__originalRotate(angle);\n };\n\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n\n this.__originalClip(rule);\n };\n\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n\n this.__originalMoveTo(x, y);\n };\n\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n\n this.__originalLineTo(x, y);\n };\n\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n\n this.__originalRect(x, y, width, height);\n };\n\n ctx.closePath = function () {\n destCtx.closePath();\n\n this.__originalClosePath();\n };\n\n ctx.beginPath = function () {\n destCtx.beginPath();\n\n this.__originalBeginPath();\n };\n}\n\nfunction addContextCurrentTransform(ctx) {\n if (ctx.mozCurrentTransform) {\n return;\n }\n\n ctx._originalSave = ctx.save;\n ctx._originalRestore = ctx.restore;\n ctx._originalRotate = ctx.rotate;\n ctx._originalScale = ctx.scale;\n ctx._originalTranslate = ctx.translate;\n ctx._originalTransform = ctx.transform;\n ctx._originalSetTransform = ctx.setTransform;\n ctx._originalResetTransform = ctx.resetTransform;\n ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n ctx._transformStack = [];\n\n try {\n var desc = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(ctx), \"lineWidth\");\n ctx._setLineWidth = desc.set;\n ctx._getLineWidth = desc.get;\n Object.defineProperty(ctx, \"lineWidth\", {\n set: function setLineWidth(width) {\n this._setLineWidth(width * LINEWIDTH_SCALE_FACTOR);\n },\n get: function getLineWidth() {\n return this._getLineWidth();\n }\n });\n } catch (_) {}\n\n Object.defineProperty(ctx, \"mozCurrentTransform\", {\n get: function getCurrentTransform() {\n return this._transformMatrix;\n }\n });\n Object.defineProperty(ctx, \"mozCurrentTransformInverse\", {\n get: function getCurrentTransformInverse() {\n var _this$_transformMatri = _slicedToArray(this._transformMatrix, 6),\n a = _this$_transformMatri[0],\n b = _this$_transformMatri[1],\n c = _this$_transformMatri[2],\n d = _this$_transformMatri[3],\n e = _this$_transformMatri[4],\n f = _this$_transformMatri[5];\n\n var ad_bc = a * d - b * c;\n var bc_ad = b * c - a * d;\n return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc];\n }\n });\n\n ctx.save = function ctxSave() {\n var old = this._transformMatrix;\n\n this._transformStack.push(old);\n\n this._transformMatrix = old.slice(0, 6);\n\n this._originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n var prev = this._transformStack.pop();\n\n if (prev) {\n this._transformMatrix = prev;\n\n this._originalRestore();\n }\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n var m = this._transformMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n\n this._originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n var m = this._transformMatrix;\n m[0] *= x;\n m[1] *= x;\n m[2] *= y;\n m[3] *= y;\n\n this._originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n var m = this._transformMatrix;\n this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]];\n\n ctx._originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n this._transformMatrix = [a, b, c, d, e, f];\n\n ctx._originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.resetTransform = function ctxResetTransform() {\n this._transformMatrix = [1, 0, 0, 1, 0, 0];\n\n ctx._originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n var cosValue = Math.cos(angle);\n var sinValue = Math.sin(angle);\n var m = this._transformMatrix;\n this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]];\n\n this._originalRotate(angle);\n };\n}\n\nvar CachedCanvases = /*#__PURE__*/function () {\n function CachedCanvases(canvasFactory) {\n _classCallCheck(this, CachedCanvases);\n\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n\n _createClass(CachedCanvases, [{\n key: \"getCanvas\",\n value: function getCanvas(id, width, height, trackTransform) {\n var canvasEntry;\n\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n\n if (trackTransform) {\n addContextCurrentTransform(canvasEntry.context);\n }\n\n return canvasEntry;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n for (var id in this.cache) {\n var canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n }]);\n\n return CachedCanvases;\n}();\n\nfunction compileType3Glyph(imgData) {\n var POINT_TO_PROCESS_LIMIT = 1000;\n var POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n var width = imgData.width,\n height = imgData.height,\n width1 = width + 1;\n var i, ii, j, j0;\n var points = new Uint8Array(width1 * (height + 1));\n var lineSize = width + 7 & ~7,\n data0 = imgData.data;\n var data = new Uint8Array(lineSize * height);\n var pos = 0;\n\n for (i = 0, ii = data0.length; i < ii; i++) {\n var elem = data0[i];\n var mask = 128;\n\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n var count = 0;\n pos = 0;\n\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n\n var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n\n pos = lineSize * (height - 1);\n j0 = i * width1;\n\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n\n var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n var outlines = [];\n\n for (i = 0; count && i <= height; i++) {\n var p = i * width1;\n var end = p + width;\n\n while (p < end && !points[p]) {\n p++;\n }\n\n if (p === end) {\n continue;\n }\n\n var coords = [p % width1, i];\n var p0 = p;\n var type = points[p];\n\n do {\n var step = steps[type];\n\n do {\n p += step;\n } while (!points[p]);\n\n var pp = points[p];\n\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n\n coords.push(p % width1, p / width1 | 0);\n\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n\n outlines.push(coords);\n --i;\n }\n\n var drawOutline = function drawOutline(c) {\n c.save();\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.beginPath();\n\n for (var k = 0, kk = outlines.length; k < kk; k++) {\n var o = outlines[k];\n c.moveTo(o[0], o[1]);\n\n for (var l = 2, ll = o.length; l < ll; l += 2) {\n c.lineTo(o[l], o[l + 1]);\n }\n }\n\n c.fill();\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nvar CanvasExtraState = /*#__PURE__*/function () {\n function CanvasExtraState(width, height) {\n _classCallCheck(this, CanvasExtraState);\n\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = _util.IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = null;\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n\n _createClass(CanvasExtraState, [{\n key: \"clone\",\n value: function clone() {\n var clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n }, {\n key: \"setCurrentPoint\",\n value: function setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n }, {\n key: \"updatePathMinMax\",\n value: function updatePathMinMax(transform, x, y) {\n var _Util$applyTransform = _util.Util.applyTransform([x, y], transform);\n\n var _Util$applyTransform2 = _slicedToArray(_Util$applyTransform, 2);\n\n x = _Util$applyTransform2[0];\n y = _Util$applyTransform2[1];\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n }, {\n key: \"updateCurvePathMinMax\",\n value: function updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3) {\n var box = _util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);\n\n this.updatePathMinMax(transform, box[0], box[1]);\n this.updatePathMinMax(transform, box[2], box[3]);\n }\n }, {\n key: \"getPathBoundingBox\",\n value: function getPathBoundingBox() {\n var pathType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _pattern_helper.PathType.FILL;\n var transform = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var box = [this.minX, this.minY, this.maxX, this.maxY];\n\n if (pathType === _pattern_helper.PathType.STROKE) {\n if (!transform) {\n (0, _util.unreachable)(\"Stroke bounding box must include transform.\");\n }\n\n var scale = _util.Util.singularValueDecompose2dScale(transform);\n\n var xStrokePad = scale[0] * this.lineWidth / 2;\n var yStrokePad = scale[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n\n return box;\n }\n }, {\n key: \"updateClipFromPath\",\n value: function updateClipFromPath() {\n var intersect = _util.Util.intersect(this.clipBox, this.getPathBoundingBox());\n\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n }, {\n key: \"startNewPathAndClipBox\",\n value: function startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n }, {\n key: \"getClippedPathBoundingBox\",\n value: function getClippedPathBoundingBox() {\n var pathType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _pattern_helper.PathType.FILL;\n var transform = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n return _util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n }]);\n\n return CanvasExtraState;\n}();\n\nfunction putBinaryImageData(ctx, imgData) {\n var transferMaps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n var height = imgData.height,\n width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0,\n destPos;\n var src = imgData.data;\n var dest = chunkImgData.data;\n var i, j, thisChunkHeight, elemsInThisChunk;\n var transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;\n\n if (transferMaps) {\n switch (transferMaps.length) {\n case 1:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[0];\n transferMapBlue = transferMaps[0];\n transferMapGray = transferMaps[0];\n break;\n\n case 4:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[1];\n transferMapBlue = transferMaps[2];\n transferMapGray = transferMaps[3];\n break;\n }\n }\n\n if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {\n var srcLength = src.byteLength;\n var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n var dest32DataLength = dest32.length;\n var fullSrcDiff = width + 7 >> 3;\n var white = 0xffffffff;\n var black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;\n\n if (transferMapGray) {\n if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {\n var _ref = [black, white];\n white = _ref[0];\n black = _ref[1];\n }\n }\n\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n\n for (j = 0; j < thisChunkHeight; j++) {\n var srcDiff = srcLength - srcPos;\n var k = 0;\n var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n var kEndUnrolled = kEnd & ~7;\n var mask = 0;\n var srcByte = 0;\n\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {\n var hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n\n if (hasTransferMaps) {\n for (var _k = 0; _k < elemsInThisChunk; _k += 4) {\n if (transferMapRed) {\n dest[_k + 0] = transferMapRed[dest[_k + 0]];\n }\n\n if (transferMapGreen) {\n dest[_k + 1] = transferMapGreen[dest[_k + 1]];\n }\n\n if (transferMapBlue) {\n dest[_k + 2] = transferMapBlue[dest[_k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n\n if (hasTransferMaps) {\n for (var _k2 = 0; _k2 < elemsInThisChunk; _k2 += 4) {\n if (transferMapRed) {\n dest[_k2 + 0] = transferMapRed[dest[_k2 + 0]];\n }\n\n if (transferMapGreen) {\n dest[_k2 + 1] = transferMapGreen[dest[_k2 + 1]];\n }\n\n if (transferMapBlue) {\n dest[_k2 + 2] = transferMapBlue[dest[_k2 + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === _util.ImageKind.RGB_24BPP) {\n var _hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);\n\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n\n destPos = 0;\n\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n\n if (_hasTransferMaps) {\n for (var _k3 = 0; _k3 < destPos; _k3 += 4) {\n if (transferMapRed) {\n dest[_k3 + 0] = transferMapRed[dest[_k3 + 0]];\n }\n\n if (transferMapGreen) {\n dest[_k3 + 1] = transferMapGreen[dest[_k3 + 1]];\n }\n\n if (transferMapBlue) {\n dest[_k3 + 2] = transferMapBlue[dest[_k3 + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(\"bad image kind: \".concat(imgData.kind));\n }\n}\n\nfunction putBinaryImageMask(ctx, imgData) {\n var height = imgData.height,\n width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0;\n var src = imgData.data;\n var dest = chunkImgData.data;\n\n for (var i = 0; i < totalChunks; i++) {\n var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n var destPos = 3;\n\n for (var j = 0; j < thisChunkHeight; j++) {\n var elem = void 0,\n mask = 0;\n\n for (var k = 0; k < width; k++) {\n if (!mask) {\n elem = src[srcPos++];\n mask = 128;\n }\n\n dest[destPos] = elem & mask ? 0 : 255;\n destPos += 4;\n mask >>= 1;\n }\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n var properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\"];\n\n for (var i = 0, ii = properties.length; i < ii; i++) {\n var property = properties[i];\n\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\n\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = \"#000000\";\n ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n}\n\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n var length = bytes.length;\n\n for (var i = 3; i < length; i += 4) {\n var alpha = bytes[i];\n\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n var alpha_ = 255 - alpha;\n bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;\n bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;\n bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;\n }\n }\n}\n\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n var length = maskData.length;\n var scale = 1 / 255;\n\n for (var i = 3; i < length; i += 4) {\n var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = layerData[i] * alpha * scale | 0;\n }\n}\n\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n var length = maskData.length;\n\n for (var i = 3; i < length; i += 4) {\n var y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;\n layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;\n }\n}\n\nfunction genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n var hasBackdrop = !!backdrop;\n var r0 = hasBackdrop ? backdrop[0] : 0;\n var g0 = hasBackdrop ? backdrop[1] : 0;\n var b0 = hasBackdrop ? backdrop[2] : 0;\n var composeFn;\n\n if (subtype === \"Luminosity\") {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n\n var PIXELS_TO_PROCESS = 1048576;\n var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n\n for (var row = 0; row < height; row += chunkSize) {\n var chunkHeight = Math.min(chunkSize, height - row);\n var maskData = maskCtx.getImageData(layerOffsetX - maskOffsetX, row + (layerOffsetY - maskOffsetY), width, chunkHeight);\n var layerData = layerCtx.getImageData(layerOffsetX, row + layerOffsetY, width, chunkHeight);\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n\n composeFn(maskData.data, layerData.data, transferMap);\n layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n }\n}\n\nfunction composeSMask(ctx, smask, layerCtx, layerBox) {\n var layerOffsetX = layerBox[0];\n var layerOffsetY = layerBox[1];\n var layerWidth = layerBox[2] - layerOffsetX;\n var layerHeight = layerBox[3] - layerOffsetY;\n\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n\n genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n}\n\nfunction getImageSmoothingEnabled(transform, interpolate) {\n var scale = _util.Util.singularValueDecompose2dScale(transform);\n\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n var actualScale = Math.fround((globalThis.devicePixelRatio || 1) * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS);\n\n if (interpolate !== undefined) {\n return interpolate;\n } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n return true;\n }\n\n return false;\n}\n\nvar LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nvar LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nvar NORMAL_CLIP = {};\nvar EO_CLIP = {};\n\nvar CanvasGraphics = /*#__PURE__*/function () {\n function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig, annotationCanvasMap) {\n _classCallCheck(this, CanvasGraphics);\n\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.imageLayer = imageLayer;\n this.groupStack = [];\n this.processingType3 = null;\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n\n if (canvasCtx) {\n addContextCurrentTransform(canvasCtx);\n }\n\n this._cachedGetSinglePixelWidth = null;\n }\n\n _createClass(CanvasGraphics, [{\n key: \"beginDrawing\",\n value: function beginDrawing(_ref2) {\n var transform = _ref2.transform,\n viewport = _ref2.viewport,\n _ref2$transparency = _ref2.transparency,\n transparency = _ref2$transparency === void 0 ? false : _ref2$transparency,\n _ref2$background = _ref2.background,\n background = _ref2$background === void 0 ? null : _ref2$background;\n var width = this.ctx.canvas.width;\n var height = this.ctx.canvas.height;\n this.ctx.save();\n this.ctx.fillStyle = background || \"rgb(255, 255, 255)\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.restore();\n\n if (transparency) {\n var transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height, true);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);\n }\n\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n\n if (transform) {\n this.ctx.transform.apply(this.ctx, transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n\n this.ctx.transform.apply(this.ctx, viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = this.ctx.mozCurrentTransform.slice();\n this._combinedScaleFactor = Math.hypot(this.baseTransform[0], this.baseTransform[2]);\n\n if (this.imageLayer) {\n this.imageLayer.beginLayout();\n }\n }\n }, {\n key: \"executeOperatorList\",\n value: function executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n var argsArray = operatorList.argsArray;\n var fnArray = operatorList.fnArray;\n var i = executionStartIdx || 0;\n var argsArrayLen = argsArray.length;\n\n if (argsArrayLen === i) {\n return i;\n }\n\n var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n var steps = 0;\n var commonObjs = this.commonObjs;\n var objs = this.objs;\n var fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== _util.OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n var _iterator = _createForOfIteratorHelper(argsArray[i]),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var depObjId = _step.value;\n var objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n i++;\n\n if (i === argsArrayLen) {\n return i;\n }\n\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n\n steps = 0;\n }\n }\n }\n }, {\n key: \"endDrawing\",\n value: function endDrawing() {\n while (this.stateStack.length || this.current.activeSMask !== null) {\n this.restore();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n\n if (this.imageLayer) {\n this.imageLayer.endLayout();\n }\n }\n }, {\n key: \"_scaleImage\",\n value: function _scaleImage(img, inverseTransform) {\n var width = img.width;\n var height = img.height;\n var widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n var heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n var paintWidth = width,\n paintHeight = height;\n var tmpCanvasId = \"prescale1\";\n var tmpCanvas, tmpCtx;\n\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n var newWidth = paintWidth,\n newHeight = paintHeight;\n\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = Math.ceil(paintHeight / 2);\n heightScale /= paintHeight / newHeight;\n }\n\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n\n return {\n img: img,\n paintWidth: paintWidth,\n paintHeight: paintHeight\n };\n }\n }, {\n key: \"_createMaskCanvas\",\n value: function _createMaskCanvas(img) {\n var ctx = this.ctx;\n var width = img.width,\n height = img.height;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n var maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n var maskCtx = maskCanvas.context;\n putBinaryImageMask(maskCtx, img);\n var objToCanvas = ctx.mozCurrentTransform;\n\n var maskToCanvas = _util.Util.transform(objToCanvas, [1 / width, 0, 0, -1 / height, 0, 0]);\n\n maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n\n var cord1 = _util.Util.applyTransform([0, 0], maskToCanvas);\n\n var cord2 = _util.Util.applyTransform([width, height], maskToCanvas);\n\n var rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);\n\n var drawnWidth = Math.ceil(rect[2] - rect[0]);\n var drawnHeight = Math.ceil(rect[3] - rect[1]);\n var fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight, true);\n var fillCtx = fillCanvas.context;\n var offsetX = Math.min(cord1[0], cord2[0]);\n var offsetY = Math.min(cord1[1], cord2[1]);\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform.apply(fillCtx, maskToCanvas);\n\n var scaled = this._scaleImage(maskCanvas.canvas, fillCtx.mozCurrentTransformInverse);\n\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(fillCtx.mozCurrentTransform, img.interpolate);\n fillCtx.drawImage(scaled.img, 0, 0, scaled.img.width, scaled.img.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n\n var inverse = _util.Util.transform(fillCtx.mozCurrentTransformInverse, [1, 0, 0, 1, -offsetX, -offsetY]);\n\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, _pattern_helper.PathType.FILL) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n }, {\n key: \"setLineWidth\",\n value: function setLineWidth(width) {\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n }, {\n key: \"setLineCap\",\n value: function setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n }, {\n key: \"setLineJoin\",\n value: function setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n }, {\n key: \"setMiterLimit\",\n value: function setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n }, {\n key: \"setDash\",\n value: function setDash(dashArray, dashPhase) {\n var ctx = this.ctx;\n\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n }, {\n key: \"setRenderingIntent\",\n value: function setRenderingIntent(intent) {}\n }, {\n key: \"setFlatness\",\n value: function setFlatness(flatness) {}\n }, {\n key: \"setGState\",\n value: function setGState(states) {\n for (var i = 0, ii = states.length; i < ii; i++) {\n var state = states[i];\n var key = state[0];\n var value = state[1];\n\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n\n case \"LC\":\n this.setLineCap(value);\n break;\n\n case \"LJ\":\n this.setLineJoin(value);\n break;\n\n case \"ML\":\n this.setMiterLimit(value);\n break;\n\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n\n case \"FL\":\n this.setFlatness(value);\n break;\n\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n\n case \"CA\":\n this.current.strokeAlpha = state[1];\n break;\n\n case \"ca\":\n this.current.fillAlpha = state[1];\n this.ctx.globalAlpha = state[1];\n break;\n\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n\n case \"TR\":\n this.current.transferMaps = value;\n }\n }\n }\n }, {\n key: \"checkSMaskState\",\n value: function checkSMaskState() {\n var inSMaskMode = !!this.suspendedCtx;\n\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n }, {\n key: \"beginSMaskMode\",\n value: function beginSMaskMode() {\n if (this.suspendedCtx) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n\n var drawnWidth = this.ctx.canvas.width;\n var drawnHeight = this.ctx.canvas.height;\n var cacheId = \"smaskGroupAt\" + this.groupLevel;\n var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n var ctx = this.ctx;\n ctx.setTransform.apply(ctx, this.suspendedCtx.mozCurrentTransform);\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n }\n }, {\n key: \"endSMaskMode\",\n value: function endSMaskMode() {\n if (!this.suspendedCtx) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n\n this.ctx._removeMirroring();\n\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.current.activeSMask = null;\n this.suspendedCtx = null;\n }\n }, {\n key: \"compose\",\n value: function compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n\n var smask = this.current.activeSMask;\n var suspendedCtx = this.suspendedCtx;\n composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n }, {\n key: \"save\",\n value: function save() {\n this.ctx.save();\n var old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n }, {\n key: \"restore\",\n value: function restore() {\n if (this.stateStack.length === 0 && this.current.activeSMask) {\n this.endSMaskMode();\n }\n\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n this.ctx.restore();\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n }, {\n key: \"transform\",\n value: function transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedGetSinglePixelWidth = null;\n }\n }, {\n key: \"constructPath\",\n value: function constructPath(ops, args) {\n var ctx = this.ctx;\n var current = this.current;\n var x = current.x,\n y = current.y;\n var startX, startY;\n\n for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case _util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n var width = args[j++];\n var height = args[j++];\n var xw = x + width;\n var yh = y + height;\n ctx.moveTo(x, y);\n\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n\n current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n current.updatePathMinMax(ctx.mozCurrentTransform, xw, yh);\n ctx.closePath();\n break;\n\n case _util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n break;\n\n case _util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n break;\n\n case _util.OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n current.updateCurvePathMinMax(ctx.mozCurrentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n j += 6;\n break;\n\n case _util.OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n current.updateCurvePathMinMax(ctx.mozCurrentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n\n case _util.OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(ctx.mozCurrentTransform, startX, startY, args[j], args[j + 1], x, y, x, y);\n j += 4;\n break;\n\n case _util.OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n\n current.setCurrentPoint(x, y);\n }\n }, {\n key: \"closePath\",\n value: function closePath() {\n this.ctx.closePath();\n }\n }, {\n key: \"stroke\",\n value: function stroke(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n var ctx = this.ctx;\n var strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n\n if (this.contentVisible) {\n if (_typeof(strokeColor) === \"object\" && strokeColor !== null && strokeColor !== void 0 && strokeColor.getPattern) {\n var lineWidth = this.getSinglePixelWidth();\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.STROKE);\n ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);\n ctx.stroke();\n ctx.restore();\n } else {\n var _lineWidth = this.getSinglePixelWidth();\n\n if (_lineWidth < 0 && -_lineWidth >= this.current.lineWidth) {\n ctx.save();\n ctx.resetTransform();\n ctx.lineWidth = Math.round(this._combinedScaleFactor);\n ctx.stroke();\n ctx.restore();\n } else {\n ctx.lineWidth = Math.max(_lineWidth, this.current.lineWidth);\n ctx.stroke();\n }\n }\n }\n\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n\n ctx.globalAlpha = this.current.fillAlpha;\n }\n }, {\n key: \"closeStroke\",\n value: function closeStroke() {\n this.closePath();\n this.stroke();\n }\n }, {\n key: \"fill\",\n value: function fill(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n var ctx = this.ctx;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n var needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL);\n needRestore = true;\n }\n\n var intersect = this.current.getClippedPathBoundingBox();\n\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n\n if (needRestore) {\n ctx.restore();\n }\n\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n }, {\n key: \"eoFill\",\n value: function eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n }, {\n key: \"fillStroke\",\n value: function fillStroke() {\n this.fill(false);\n this.stroke(false);\n this.consumePath();\n }\n }, {\n key: \"eoFillStroke\",\n value: function eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n }, {\n key: \"closeFillStroke\",\n value: function closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n }, {\n key: \"closeEOFillStroke\",\n value: function closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n }, {\n key: \"endPath\",\n value: function endPath() {\n this.consumePath();\n }\n }, {\n key: \"clip\",\n value: function clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n }, {\n key: \"eoClip\",\n value: function eoClip() {\n this.pendingClip = EO_CLIP;\n }\n }, {\n key: \"beginText\",\n value: function beginText() {\n this.current.textMatrix = _util.IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n }, {\n key: \"endText\",\n value: function endText() {\n var paths = this.pendingTextPaths;\n var ctx = this.ctx;\n\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n\n for (var i = 0; i < paths.length; i++) {\n var path = paths[i];\n ctx.setTransform.apply(ctx, path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n }, {\n key: \"setCharSpacing\",\n value: function setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n }, {\n key: \"setWordSpacing\",\n value: function setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n }, {\n key: \"setHScale\",\n value: function setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n }, {\n key: \"setLeading\",\n value: function setLeading(leading) {\n this.current.leading = -leading;\n }\n }, {\n key: \"setFont\",\n value: function setFont(fontRefName, size) {\n var fontObj = this.commonObjs.get(fontRefName);\n var current = this.current;\n\n if (!fontObj) {\n throw new Error(\"Can't find font for \".concat(fontRefName));\n }\n\n current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n (0, _util.warn)(\"Invalid font matrix for font \" + fontRefName);\n }\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return;\n }\n\n var name = fontObj.loadedName || \"sans-serif\";\n var bold = \"normal\";\n\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n\n var italic = fontObj.italic ? \"italic\" : \"normal\";\n var typeface = \"\\\"\".concat(name, \"\\\", \").concat(fontObj.fallbackName);\n var browserFontSize = size;\n\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = \"\".concat(italic, \" \").concat(bold, \" \").concat(browserFontSize, \"px \").concat(typeface);\n }\n }, {\n key: \"setTextRenderingMode\",\n value: function setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n }, {\n key: \"setTextRise\",\n value: function setTextRise(rise) {\n this.current.textRise = rise;\n }\n }, {\n key: \"moveText\",\n value: function moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n }, {\n key: \"setLeadingMoveText\",\n value: function setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n }, {\n key: \"setTextMatrix\",\n value: function setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n }, {\n key: \"nextLine\",\n value: function nextLine() {\n this.moveText(0, this.current.leading);\n }\n }, {\n key: \"paintChar\",\n value: function paintChar(character, x, y, patternTransform, resetLineWidthToOne) {\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var textRenderingMode = current.textRenderingMode;\n var fontSize = current.fontSize / current.fontSizeScale;\n var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);\n var patternFill = current.patternFill && !font.missingFile;\n var addToPath;\n\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n\n if (patternTransform) {\n ctx.setTransform.apply(ctx, patternTransform);\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n if (resetLineWidthToOne) {\n ctx.resetTransform();\n ctx.lineWidth = Math.round(this._combinedScaleFactor);\n }\n\n ctx.stroke();\n }\n\n ctx.restore();\n } else {\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n if (resetLineWidthToOne) {\n ctx.save();\n ctx.moveTo(x, y);\n ctx.resetTransform();\n ctx.lineWidth = Math.round(this._combinedScaleFactor);\n ctx.strokeText(character, 0, 0);\n ctx.restore();\n } else {\n ctx.strokeText(character, x, y);\n }\n }\n }\n\n if (isAddToPathSet) {\n var paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n paths.push({\n transform: ctx.mozCurrentTransform,\n x: x,\n y: y,\n fontSize: fontSize,\n addToPath: addToPath\n });\n }\n }\n }, {\n key: \"isFontSubpixelAAEnabled\",\n get: function get() {\n var _this$cachedCanvases$ = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10),\n ctx = _this$cachedCanvases$.context;\n\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n var data = ctx.getImageData(0, 0, 10, 10).data;\n var enabled = false;\n\n for (var i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n\n return (0, _util.shadow)(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n }, {\n key: \"showText\",\n value: function showText(glyphs) {\n var current = this.current;\n var font = current.font;\n\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n var fontSize = current.fontSize;\n\n if (fontSize === 0) {\n return undefined;\n }\n\n var ctx = this.ctx;\n var fontSizeScale = current.fontSizeScale;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var fontDirection = current.fontDirection;\n var textHScale = current.textHScale * fontDirection;\n var glyphsLength = glyphs.length;\n var vertical = font.vertical;\n var spacingDir = vertical ? 1 : -1;\n var defaultVMetrics = font.defaultVMetrics;\n var widthAdvanceScale = fontSize * current.fontMatrix[0];\n var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n var patternTransform;\n\n if (current.patternFill) {\n ctx.save();\n var pattern = current.fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL);\n patternTransform = ctx.mozCurrentTransform;\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n\n var lineWidth = current.lineWidth;\n var resetLineWidthToOne = false;\n var scale = current.textMatrixScale;\n\n if (scale === 0 || lineWidth === 0) {\n var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n this._cachedGetSinglePixelWidth = null;\n lineWidth = this.getSinglePixelWidth();\n resetLineWidthToOne = lineWidth < 0;\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n var x = 0,\n i;\n\n for (i = 0; i < glyphsLength; ++i) {\n var glyph = glyphs[i];\n\n if ((0, _util.isNum)(glyph)) {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n\n var restoreNeeded = false;\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var character = glyph.fontChar;\n var accent = glyph.accent;\n var scaledX = void 0,\n scaledY = void 0;\n var width = glyph.width;\n\n if (vertical) {\n var vmetric = glyph.vmetric || defaultVMetrics;\n var vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n var vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (font.remeasure && width > 0) {\n var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n var characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform, resetLineWidthToOne);\n\n if (accent) {\n var scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n var scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform, resetLineWidthToOne);\n }\n }\n }\n\n var charWidth = void 0;\n\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n ctx.restore();\n this.compose();\n return undefined;\n }\n }, {\n key: \"showType3Text\",\n value: function showType3Text(glyphs) {\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var fontSize = current.fontSize;\n var fontDirection = current.fontDirection;\n var spacingDir = font.vertical ? 1 : -1;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var textHScale = current.textHScale * fontDirection;\n var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n var glyphsLength = glyphs.length;\n var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;\n var i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y);\n ctx.scale(textHScale, fontDirection);\n\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n\n if ((0, _util.isNum)(glyph)) {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var operatorList = font.charProcOperatorList[glyph.operatorListId];\n\n if (!operatorList) {\n (0, _util.warn)(\"Type3 character \\\"\".concat(glyph.operatorListId, \"\\\" is not available.\"));\n continue;\n }\n\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform.apply(ctx, fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n\n var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);\n\n width = transformed[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n\n ctx.restore();\n this.processingType3 = null;\n }\n }, {\n key: \"setCharWidth\",\n value: function setCharWidth(xWidth, yWidth) {}\n }, {\n key: \"setCharWidthAndBounds\",\n value: function setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.clip();\n this.endPath();\n }\n }, {\n key: \"getColorN_Pattern\",\n value: function getColorN_Pattern(IR) {\n var _this = this;\n\n var pattern;\n\n if (IR[0] === \"TilingPattern\") {\n var color = IR[1];\n var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();\n var canvasGraphicsFactory = {\n createCanvasGraphics: function createCanvasGraphics(ctx) {\n return new CanvasGraphics(ctx, _this.commonObjs, _this.objs, _this.canvasFactory);\n }\n };\n pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n\n return pattern;\n }\n }, {\n key: \"setStrokeColorN\",\n value: function setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n }, {\n key: \"setFillColorN\",\n value: function setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n }, {\n key: \"setStrokeRGBColor\",\n value: function setStrokeRGBColor(r, g, b) {\n var color = _util.Util.makeHexColor(r, g, b);\n\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n }\n }, {\n key: \"setFillRGBColor\",\n value: function setFillRGBColor(r, g, b) {\n var color = _util.Util.makeHexColor(r, g, b);\n\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n }\n }, {\n key: \"_getPattern\",\n value: function _getPattern(objId) {\n var matrix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var pattern;\n\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = (0, _pattern_helper.getShadingPattern)(this.objs.get(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n\n if (matrix) {\n pattern.matrix = matrix;\n }\n\n return pattern;\n }\n }, {\n key: \"shadingFill\",\n value: function shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n\n var ctx = this.ctx;\n this.save();\n\n var pattern = this._getPattern(objId);\n\n ctx.fillStyle = pattern.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.SHADING);\n var inv = ctx.mozCurrentTransformInverse;\n\n if (inv) {\n var canvas = ctx.canvas;\n var width = canvas.width;\n var height = canvas.height;\n\n var bl = _util.Util.applyTransform([0, 0], inv);\n\n var br = _util.Util.applyTransform([0, height], inv);\n\n var ul = _util.Util.applyTransform([width, 0], inv);\n\n var ur = _util.Util.applyTransform([width, height], inv);\n\n var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n }, {\n key: \"beginInlineImage\",\n value: function beginInlineImage() {\n (0, _util.unreachable)(\"Should not call beginInlineImage\");\n }\n }, {\n key: \"beginImageData\",\n value: function beginImageData() {\n (0, _util.unreachable)(\"Should not call beginImageData\");\n }\n }, {\n key: \"paintFormXObjectBegin\",\n value: function paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform.apply(this, matrix);\n }\n\n this.baseTransform = this.ctx.mozCurrentTransform;\n\n if (bbox) {\n var width = bbox[2] - bbox[0];\n var height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updatePathMinMax(this.ctx.mozCurrentTransform, bbox[0], bbox[1]);\n this.current.updatePathMinMax(this.ctx.mozCurrentTransform, bbox[2], bbox[3]);\n this.clip();\n this.endPath();\n }\n }\n }, {\n key: \"paintFormXObjectEnd\",\n value: function paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n }, {\n key: \"beginGroup\",\n value: function beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n var suspendedCtx = this.suspendedCtx;\n\n if (this.current.activeSMask) {\n this.suspendedCtx = null;\n this.current.activeSMask = null;\n }\n\n var currentCtx = this.ctx;\n\n if (!group.isolated) {\n (0, _util.info)(\"TODO: Support non-isolated groups.\");\n }\n\n if (group.knockout) {\n (0, _util.warn)(\"Knockout groups not supported.\");\n }\n\n var currentTransform = currentCtx.mozCurrentTransform;\n\n if (group.matrix) {\n currentCtx.transform.apply(currentCtx, group.matrix);\n }\n\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n\n var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);\n\n var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n var offsetX = Math.floor(bounds[0]);\n var offsetY = Math.floor(bounds[1]);\n var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n var scaleX = 1,\n scaleY = 1;\n\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n var cacheId = \"groupAt\" + this.groupLevel;\n\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n\n var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);\n var groupCtx = scratchCanvas.context;\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX: offsetX,\n offsetY: offsetY,\n scaleX: scaleX,\n scaleY: scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n currentCtx.save();\n }\n\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push({\n ctx: currentCtx,\n suspendedCtx: suspendedCtx\n });\n this.groupLevel++;\n }\n }, {\n key: \"endGroup\",\n value: function endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.groupLevel--;\n var groupCtx = this.ctx;\n\n var _this$groupStack$pop = this.groupStack.pop(),\n ctx = _this$groupStack$pop.ctx,\n suspendedCtx = _this$groupStack$pop.suspendedCtx;\n\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n\n if (suspendedCtx) {\n this.suspendedCtx = suspendedCtx;\n }\n\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n var currentMtx = this.ctx.mozCurrentTransform;\n this.restore();\n this.ctx.save();\n this.ctx.setTransform.apply(this.ctx, currentMtx);\n\n var dirtyBox = _util.Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n }, {\n key: \"beginAnnotations\",\n value: function beginAnnotations() {\n this.save();\n\n if (this.baseTransform) {\n this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n }\n }\n }, {\n key: \"endAnnotations\",\n value: function endAnnotations() {\n this.restore();\n }\n }, {\n key: \"beginAnnotation\",\n value: function beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.save();\n\n if (Array.isArray(rect) && rect.length === 4) {\n var width = rect[2] - rect[0];\n var height = rect[3] - rect[1];\n\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n\n var _Util$singularValueDe = _util.Util.singularValueDecompose2dScale(this.ctx.mozCurrentTransform),\n _Util$singularValueDe2 = _slicedToArray(_Util$singularValueDe, 2),\n scaleX = _Util$singularValueDe2[0],\n scaleY = _Util$singularValueDe2[1];\n\n var viewportScale = this.viewportScale;\n var canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n var canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n var _this$annotationCanva = this.annotationCanvas,\n canvas = _this$annotationCanva.canvas,\n context = _this$annotationCanva.context;\n canvas.style.width = \"calc(\".concat(width, \"px * var(--viewport-scale-factor))\");\n canvas.style.height = \"calc(\".concat(height, \"px * var(--viewport-scale-factor))\");\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n addContextCurrentTransform(this.ctx);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.ctx.rect(rect[0], rect[1], width, height);\n this.clip();\n this.endPath();\n }\n }\n\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform.apply(this, transform);\n this.transform.apply(this, matrix);\n }\n }, {\n key: \"endAnnotation\",\n value: function endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n\n this.restore();\n }\n }, {\n key: \"paintImageMaskXObject\",\n value: function paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n\n var ctx = this.ctx;\n var width = img.width,\n height = img.height;\n var glyph = this.processingType3;\n\n if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {\n if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {\n glyph.compiled = compileType3Glyph({\n data: img.data,\n width: width,\n height: height\n });\n } else {\n glyph.compiled = null;\n }\n }\n\n if (glyph !== null && glyph !== void 0 && glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n\n var mask = this._createMaskCanvas(img);\n\n var maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n }, {\n key: \"paintImageMaskXObjectRepeat\",\n value: function paintImageMaskXObjectRepeat(imgData, scaleX) {\n var skewX = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var skewY = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var scaleY = arguments.length > 4 ? arguments[4] : undefined;\n var positions = arguments.length > 5 ? arguments[5] : undefined;\n\n if (!this.contentVisible) {\n return;\n }\n\n var ctx = this.ctx;\n ctx.save();\n var currentTransform = ctx.mozCurrentTransform;\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n\n var mask = this._createMaskCanvas(imgData);\n\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n var trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n\n var _Util$applyTransform3 = _util.Util.applyTransform([0, 0], trans),\n _Util$applyTransform4 = _slicedToArray(_Util$applyTransform3, 2),\n x = _Util$applyTransform4[0],\n y = _Util$applyTransform4[1];\n\n ctx.drawImage(mask.canvas, x, y);\n }\n\n ctx.restore();\n this.compose();\n }\n }, {\n key: \"paintImageMaskXObjectGroup\",\n value: function paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n\n var ctx = this.ctx;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n\n for (var i = 0, ii = images.length; i < ii; i++) {\n var image = images[i];\n var width = image.width,\n height = image.height;\n var maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n putBinaryImageMask(maskCtx, image);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform.apply(ctx, image.transform);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n\n this.compose();\n }\n }, {\n key: \"paintImageXObject\",\n value: function paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n\n var imgData = objId.startsWith(\"g_\") ? this.commonObjs.get(objId) : this.objs.get(objId);\n\n if (!imgData) {\n (0, _util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n }\n }, {\n key: \"paintImageXObjectRepeat\",\n value: function paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n\n var imgData = objId.startsWith(\"g_\") ? this.commonObjs.get(objId) : this.objs.get(objId);\n\n if (!imgData) {\n (0, _util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n\n var width = imgData.width;\n var height = imgData.height;\n var map = [];\n\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n }, {\n key: \"paintInlineImageXObject\",\n value: function paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n\n var width = imgData.width;\n var height = imgData.height;\n var ctx = this.ctx;\n this.save();\n ctx.scale(1 / width, -1 / height);\n var imgToPaint;\n\n if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n var tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n imgToPaint = tmpCanvas.canvas;\n }\n\n var scaled = this._scaleImage(imgToPaint, ctx.mozCurrentTransformInverse);\n\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(ctx.mozCurrentTransform, imgData.interpolate);\n ctx.drawImage(scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n\n if (this.imageLayer) {\n var position = this.getCanvasPosition(0, -height);\n this.imageLayer.appendImage({\n imgData: imgData,\n left: position[0],\n top: position[1],\n width: width / ctx.mozCurrentTransformInverse[0],\n height: height / ctx.mozCurrentTransformInverse[3]\n });\n }\n\n this.compose();\n this.restore();\n }\n }, {\n key: \"paintInlineImageXObjectGroup\",\n value: function paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n\n var ctx = this.ctx;\n var w = imgData.width;\n var h = imgData.height;\n var tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n\n for (var i = 0, ii = map.length; i < ii; i++) {\n var entry = map[i];\n ctx.save();\n ctx.transform.apply(ctx, entry.transform);\n ctx.scale(1, -1);\n ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n\n if (this.imageLayer) {\n var position = this.getCanvasPosition(entry.x, entry.y);\n this.imageLayer.appendImage({\n imgData: imgData,\n left: position[0],\n top: position[1],\n width: w,\n height: h\n });\n }\n\n ctx.restore();\n }\n\n this.compose();\n }\n }, {\n key: \"paintSolidColorImageMask\",\n value: function paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n }, {\n key: \"markPoint\",\n value: function markPoint(tag) {}\n }, {\n key: \"markPointProps\",\n value: function markPointProps(tag, properties) {}\n }, {\n key: \"beginMarkedContent\",\n value: function beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\n }\n }, {\n key: \"beginMarkedContentProps\",\n value: function beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n\n this.contentVisible = this.isContentVisible();\n }\n }, {\n key: \"endMarkedContent\",\n value: function endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n }, {\n key: \"beginCompat\",\n value: function beginCompat() {}\n }, {\n key: \"endCompat\",\n value: function endCompat() {}\n }, {\n key: \"consumePath\",\n value: function consumePath(clipBox) {\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n\n var ctx = this.ctx;\n\n if (this.pendingClip) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n\n this.pendingClip = null;\n }\n\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n }, {\n key: \"getSinglePixelWidth\",\n value: function getSinglePixelWidth() {\n if (this._cachedGetSinglePixelWidth === null) {\n var m = this.ctx.mozCurrentTransform;\n var absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n var sqNorm1 = Math.pow(m[0], 2) + Math.pow(m[2], 2);\n var sqNorm2 = Math.pow(m[1], 2) + Math.pow(m[3], 2);\n var pixelHeight = Math.sqrt(Math.max(sqNorm1, sqNorm2)) / absDet;\n\n if (sqNorm1 !== sqNorm2 && this._combinedScaleFactor * pixelHeight > 1) {\n this._cachedGetSinglePixelWidth = -(this._combinedScaleFactor * pixelHeight);\n } else if (absDet > Number.EPSILON) {\n this._cachedGetSinglePixelWidth = pixelHeight;\n } else {\n this._cachedGetSinglePixelWidth = 1;\n }\n }\n\n return this._cachedGetSinglePixelWidth;\n }\n }, {\n key: \"getCanvasPosition\",\n value: function getCanvasPosition(x, y) {\n var transform = this.ctx.mozCurrentTransform;\n return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]];\n }\n }, {\n key: \"isContentVisible\",\n value: function isContentVisible() {\n for (var i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n\n return true;\n }\n }]);\n\n return CanvasGraphics;\n}();\n\nexports.CanvasGraphics = CanvasGraphics;\n\nfor (var op in _util.OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n/***/ }),\n/* 141 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.TilingPattern = exports.PathType = void 0;\nexports.getShadingPattern = getShadingPattern;\n\nvar _util = __w_pdfjs_require__(4);\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nexports.PathType = PathType;\n\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox || typeof Path2D === \"undefined\") {\n return;\n }\n\n var width = bbox[2] - bbox[0];\n var height = bbox[3] - bbox[1];\n var region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\n\nvar BaseShadingPattern = /*#__PURE__*/function () {\n function BaseShadingPattern() {\n _classCallCheck(this, BaseShadingPattern);\n\n if (this.constructor === BaseShadingPattern) {\n (0, _util.unreachable)(\"Cannot initialize BaseShadingPattern.\");\n }\n }\n\n _createClass(BaseShadingPattern, [{\n key: \"getPattern\",\n value: function getPattern() {\n (0, _util.unreachable)(\"Abstract method `getPattern` called.\");\n }\n }]);\n\n return BaseShadingPattern;\n}();\n\nvar RadialAxialShadingPattern = /*#__PURE__*/function (_BaseShadingPattern) {\n _inherits(RadialAxialShadingPattern, _BaseShadingPattern);\n\n var _super = _createSuper(RadialAxialShadingPattern);\n\n function RadialAxialShadingPattern(IR) {\n var _this;\n\n _classCallCheck(this, RadialAxialShadingPattern);\n\n _this = _super.call(this);\n _this._type = IR[1];\n _this._bbox = IR[2];\n _this._colorStops = IR[3];\n _this._p0 = IR[4];\n _this._p1 = IR[5];\n _this._r0 = IR[6];\n _this._r1 = IR[7];\n _this.matrix = null;\n return _this;\n }\n\n _createClass(RadialAxialShadingPattern, [{\n key: \"_createGradient\",\n value: function _createGradient(ctx) {\n var grad;\n\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n }\n\n var _iterator = _createForOfIteratorHelper(this._colorStops),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var colorStop = _step.value;\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return grad;\n }\n }, {\n key: \"getPattern\",\n value: function getPattern(ctx, owner, inverse, pathType) {\n var pattern;\n\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n var ownerBBox = owner.current.getClippedPathBoundingBox(pathType, ctx.mozCurrentTransform) || [0, 0, 0, 0];\n var width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n var height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n var tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height, true);\n var tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = _util.Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform.apply(tmpCtx, owner.baseTransform);\n\n if (this.matrix) {\n tmpCtx.transform.apply(tmpCtx, this.matrix);\n }\n\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n var domMatrix = new DOMMatrix(inverse);\n\n try {\n pattern.setTransform(domMatrix);\n } catch (ex) {\n (0, _util.warn)(\"RadialAxialShadingPattern.getPattern: \\\"\".concat(ex === null || ex === void 0 ? void 0 : ex.message, \"\\\".\"));\n }\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n\n return pattern;\n }\n }]);\n\n return RadialAxialShadingPattern;\n}(BaseShadingPattern);\n\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n var coords = context.coords,\n colors = context.colors;\n var bytes = data.data,\n rowSize = data.width * 4;\n var tmp;\n\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n\n var x1 = (coords[p1] + context.offsetX) * context.scaleX;\n var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n var x2 = (coords[p2] + context.offsetX) * context.scaleX;\n var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n var x3 = (coords[p3] + context.offsetX) * context.scaleX;\n var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n\n if (y1 >= y3) {\n return;\n }\n\n var c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n var c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n var c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n var minY = Math.round(y1),\n maxY = Math.round(y3);\n var xa, car, cag, cab;\n var xb, cbr, cbg, cbb;\n\n for (var y = minY; y <= maxY; y++) {\n if (y < y2) {\n var _k = void 0;\n\n if (y < y1) {\n _k = 0;\n } else {\n _k = (y1 - y) / (y1 - y2);\n }\n\n xa = x1 - (x1 - x2) * _k;\n car = c1r - (c1r - c2r) * _k;\n cag = c1g - (c1g - c2g) * _k;\n cab = c1b - (c1b - c2b) * _k;\n } else {\n var _k2 = void 0;\n\n if (y > y3) {\n _k2 = 1;\n } else if (y2 === y3) {\n _k2 = 0;\n } else {\n _k2 = (y2 - y) / (y2 - y3);\n }\n\n xa = x2 - (x2 - x3) * _k2;\n car = c2r - (c2r - c3r) * _k2;\n cag = c2g - (c2g - c3g) * _k2;\n cab = c2b - (c2b - c3b) * _k2;\n }\n\n var k = void 0;\n\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n var x1_ = Math.round(Math.min(xa, xb));\n var x2_ = Math.round(Math.max(xa, xb));\n var j = rowSize * y + x1_ * 4;\n\n for (var x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\n\nfunction drawFigure(data, figure, context) {\n var ps = figure.coords;\n var cs = figure.colors;\n var i, ii;\n\n switch (figure.type) {\n case \"lattice\":\n var verticesPerRow = figure.verticesPerRow;\n var rows = Math.floor(ps.length / verticesPerRow) - 1;\n var cols = verticesPerRow - 1;\n\n for (i = 0; i < rows; i++) {\n var q = i * verticesPerRow;\n\n for (var j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n\n break;\n\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n\n break;\n\n default:\n throw new Error(\"illegal figure\");\n }\n}\n\nvar MeshShadingPattern = /*#__PURE__*/function (_BaseShadingPattern2) {\n _inherits(MeshShadingPattern, _BaseShadingPattern2);\n\n var _super2 = _createSuper(MeshShadingPattern);\n\n function MeshShadingPattern(IR) {\n var _this2;\n\n _classCallCheck(this, MeshShadingPattern);\n\n _this2 = _super2.call(this);\n _this2._coords = IR[2];\n _this2._colors = IR[3];\n _this2._figures = IR[4];\n _this2._bounds = IR[5];\n _this2._bbox = IR[7];\n _this2._background = IR[8];\n _this2.matrix = null;\n return _this2;\n }\n\n _createClass(MeshShadingPattern, [{\n key: \"_createMeshCanvas\",\n value: function _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n var EXPECTED_SCALE = 1.1;\n var MAX_PATTERN_SIZE = 3000;\n var BORDER_SIZE = 2;\n var offsetX = Math.floor(this._bounds[0]);\n var offsetY = Math.floor(this._bounds[1]);\n var boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n var boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n var scaleX = boundsWidth / width;\n var scaleY = boundsHeight / height;\n var context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n var paddedWidth = width + BORDER_SIZE * 2;\n var paddedHeight = height + BORDER_SIZE * 2;\n var tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight, false);\n var tmpCtx = tmpCanvas.context;\n var data = tmpCtx.createImageData(width, height);\n\n if (backgroundColor) {\n var bytes = data.data;\n\n for (var i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n\n var _iterator2 = _createForOfIteratorHelper(this._figures),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var figure = _step2.value;\n drawFigure(data, figure, context);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n var canvas = tmpCanvas.canvas;\n return {\n canvas: canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX: scaleX,\n scaleY: scaleY\n };\n }\n }, {\n key: \"getPattern\",\n value: function getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n var scale;\n\n if (pathType === PathType.SHADING) {\n scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);\n } else {\n scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);\n\n if (this.matrix) {\n var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);\n\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n\n var temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n\n if (pathType !== PathType.SHADING) {\n ctx.setTransform.apply(ctx, owner.baseTransform);\n\n if (this.matrix) {\n ctx.transform.apply(ctx, this.matrix);\n }\n }\n\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n }]);\n\n return MeshShadingPattern;\n}(BaseShadingPattern);\n\nvar DummyShadingPattern = /*#__PURE__*/function (_BaseShadingPattern3) {\n _inherits(DummyShadingPattern, _BaseShadingPattern3);\n\n var _super3 = _createSuper(DummyShadingPattern);\n\n function DummyShadingPattern() {\n _classCallCheck(this, DummyShadingPattern);\n\n return _super3.apply(this, arguments);\n }\n\n _createClass(DummyShadingPattern, [{\n key: \"getPattern\",\n value: function getPattern() {\n return \"hotpink\";\n }\n }]);\n\n return DummyShadingPattern;\n}(BaseShadingPattern);\n\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n\n throw new Error(\"Unknown IR type: \".concat(IR[0]));\n}\n\nvar PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\n\nvar TilingPattern = /*#__PURE__*/function () {\n function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n _classCallCheck(this, TilingPattern);\n\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n\n _createClass(TilingPattern, [{\n key: \"createPatternCanvas\",\n value: function createPatternCanvas(owner) {\n var operatorList = this.operatorList;\n var bbox = this.bbox;\n var xstep = this.xstep;\n var ystep = this.ystep;\n var paintType = this.paintType;\n var tilingType = this.tilingType;\n var color = this.color;\n var canvasGraphicsFactory = this.canvasGraphicsFactory;\n (0, _util.info)(\"TilingType: \" + tilingType);\n var x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n\n var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);\n\n var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);\n\n var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];\n var dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);\n var dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);\n var tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size, true);\n var tmpCtx = tmpCanvas.context;\n var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n var adjustedX0 = x0;\n var adjustedY0 = y0;\n var adjustedX1 = x1;\n var adjustedY1 = y1;\n\n if (x0 < 0) {\n adjustedX0 = 0;\n adjustedX1 += Math.abs(x0);\n }\n\n if (y0 < 0) {\n adjustedY0 = 0;\n adjustedY1 += Math.abs(y0);\n }\n\n tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n graphics.baseTransform = graphics.ctx.mozCurrentTransform.slice();\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: adjustedX0,\n offsetY: adjustedY0\n };\n }\n }, {\n key: \"getSizeAndScale\",\n value: function getSizeAndScale(step, realOutputSize, scale) {\n step = Math.abs(step);\n var maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n var size = Math.ceil(step * scale);\n\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n\n return {\n scale: scale,\n size: size\n };\n }\n }, {\n key: \"clipBbox\",\n value: function clipBbox(graphics, x0, y0, x1, y1) {\n var bboxWidth = x1 - x0;\n var bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.clip();\n graphics.endPath();\n }\n }, {\n key: \"setFillAndStrokeStyleToContext\",\n value: function setFillAndStrokeStyleToContext(graphics, paintType, color) {\n var context = graphics.ctx,\n current = graphics.current;\n\n switch (paintType) {\n case PaintType.COLORED:\n var ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n\n case PaintType.UNCOLORED:\n var cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]);\n\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n\n default:\n throw new _util.FormatError(\"Unsupported paint type: \".concat(paintType));\n }\n }\n }, {\n key: \"getPattern\",\n value: function getPattern(ctx, owner, inverse, pathType) {\n var matrix = inverse;\n\n if (pathType !== PathType.SHADING) {\n matrix = _util.Util.transform(matrix, owner.baseTransform);\n\n if (this.matrix) {\n matrix = _util.Util.transform(matrix, this.matrix);\n }\n }\n\n var temporaryPatternCanvas = this.createPatternCanvas(owner);\n var domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n var pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n\n try {\n pattern.setTransform(domMatrix);\n } catch (ex) {\n (0, _util.warn)(\"TilingPattern.getPattern: \\\"\".concat(ex === null || ex === void 0 ? void 0 : ex.message, \"\\\".\"));\n }\n\n return pattern;\n }\n }], [{\n key: \"MAX_PATTERN_SIZE\",\n get: function get() {\n return (0, _util.shadow)(this, \"MAX_PATTERN_SIZE\", 3000);\n }\n }]);\n\n return TilingPattern;\n}();\n\nexports.TilingPattern = TilingPattern;\n\n/***/ }),\n/* 142 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.GlobalWorkerOptions = void 0;\nvar GlobalWorkerOptions = Object.create(null);\nexports.GlobalWorkerOptions = GlobalWorkerOptions;\nGlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort;\nGlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? \"\" : GlobalWorkerOptions.workerSrc;\n\n/***/ }),\n/* 143 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.MessageHandler = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(4);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2\n};\nvar StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\n\nfunction wrapReason(reason) {\n if (!(reason instanceof Error || _typeof(reason) === \"object\" && reason !== null)) {\n (0, _util.warn)('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n return reason;\n }\n\n switch (reason.name) {\n case \"AbortException\":\n return new _util.AbortException(reason.message);\n\n case \"MissingPDFException\":\n return new _util.MissingPDFException(reason.message);\n\n case \"PasswordException\":\n return new _util.PasswordException(reason.message, reason.code);\n\n case \"UnexpectedResponseException\":\n return new _util.UnexpectedResponseException(reason.message, reason.status);\n\n case \"UnknownErrorException\":\n return new _util.UnknownErrorException(reason.message, reason.details);\n\n default:\n return new _util.UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nvar MessageHandler = /*#__PURE__*/function () {\n function MessageHandler(sourceName, targetName, comObj) {\n var _this = this;\n\n _classCallCheck(this, MessageHandler);\n\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = function (event) {\n var data = event.data;\n\n if (data.targetName !== _this.sourceName) {\n return;\n }\n\n if (data.stream) {\n _this._processStreamMessage(data);\n\n return;\n }\n\n if (data.callback) {\n var callbackId = data.callbackId;\n var capability = _this.callbackCapabilities[callbackId];\n\n if (!capability) {\n throw new Error(\"Cannot resolve callback \".concat(callbackId));\n }\n\n delete _this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n\n return;\n }\n\n var action = _this.actionHandler[data.action];\n\n if (!action) {\n throw new Error(\"Unknown action from worker: \".concat(data.action));\n }\n\n if (data.callbackId) {\n var cbSourceName = _this.sourceName;\n var cbTargetName = data.sourceName;\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n\n if (data.streamId) {\n _this._createStreamSink(data);\n\n return;\n }\n\n action(data.data);\n };\n\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n _createClass(MessageHandler, [{\n key: \"on\",\n value: function on(actionName, handler) {\n var ah = this.actionHandler;\n\n if (ah[actionName]) {\n throw new Error(\"There is already an actionName called \\\"\".concat(actionName, \"\\\"\"));\n }\n\n ah[actionName] = handler;\n }\n }, {\n key: \"send\",\n value: function send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data: data\n }, transfers);\n }\n }, {\n key: \"sendWithPromise\",\n value: function sendWithPromise(actionName, data, transfers) {\n var callbackId = this.callbackId++;\n var capability = (0, _util.createPromiseCapability)();\n this.callbackCapabilities[callbackId] = capability;\n\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId: callbackId,\n data: data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n\n return capability.promise;\n }\n }, {\n key: \"sendWithStream\",\n value: function sendWithStream(actionName, data, queueingStrategy, transfers) {\n var _this2 = this;\n\n var streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: function start(controller) {\n var startCapability = (0, _util.createPromiseCapability)();\n _this2.streamControllers[streamId] = {\n controller: controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n action: actionName,\n streamId: streamId,\n data: data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: function pull(controller) {\n var pullCapability = (0, _util.createPromiseCapability)();\n _this2.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.PULL,\n streamId: streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: function cancel(reason) {\n (0, _util.assert)(reason instanceof Error, \"cancel must have a valid reason\");\n var cancelCapability = (0, _util.createPromiseCapability)();\n _this2.streamControllers[streamId].cancelCall = cancelCapability;\n _this2.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.CANCEL,\n streamId: streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n }, {\n key: \"_createStreamSink\",\n value: function _createStreamSink(data) {\n var streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n var self = this,\n action = this.actionHandler[data.action];\n var streamSink = {\n enqueue: function enqueue(chunk) {\n var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var transfers = arguments.length > 2 ? arguments[2] : undefined;\n\n if (this.isCancelled) {\n return;\n }\n\n var lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = (0, _util.createPromiseCapability)();\n this.ready = this.sinkCapability.promise;\n }\n\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.ENQUEUE,\n streamId: streamId,\n chunk: chunk\n }, transfers);\n },\n close: function close() {\n if (this.isCancelled) {\n return;\n }\n\n this.isCancelled = true;\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.CLOSE,\n streamId: streamId\n });\n delete self.streamSinks[streamId];\n },\n error: function error(reason) {\n (0, _util.assert)(reason instanceof Error, \"error must have a valid reason\");\n\n if (this.isCancelled) {\n return;\n }\n\n this.isCancelled = true;\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.ERROR,\n streamId: streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: (0, _util.createPromiseCapability)(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(function () {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.START_COMPLETE,\n streamId: streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.START_COMPLETE,\n streamId: streamId,\n reason: wrapReason(reason)\n });\n });\n }\n }, {\n key: \"_processStreamMessage\",\n value: function _processStreamMessage(data) {\n var streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n var streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n\n break;\n\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n\n break;\n\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId: streamId,\n success: true\n });\n break;\n }\n\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n\n streamSink.desiredSize = data.desiredSize;\n new Promise(function (resolve) {\n resolve(streamSink.onPull && streamSink.onPull());\n }).then(function () {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId: streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId: streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n\n case StreamKind.ENQUEUE:\n (0, _util.assert)(streamController, \"enqueue should have stream controller\");\n\n if (streamController.isClosed) {\n break;\n }\n\n streamController.controller.enqueue(data.chunk);\n break;\n\n case StreamKind.CLOSE:\n (0, _util.assert)(streamController, \"close should have stream controller\");\n\n if (streamController.isClosed) {\n break;\n }\n\n streamController.isClosed = true;\n streamController.controller.close();\n\n this._deleteStreamController(streamController, streamId);\n\n break;\n\n case StreamKind.ERROR:\n (0, _util.assert)(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n\n this._deleteStreamController(streamController, streamId);\n\n break;\n\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n\n this._deleteStreamController(streamController, streamId);\n\n break;\n\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n\n new Promise(function (resolve) {\n resolve(streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason)));\n }).then(function () {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId: streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: sourceName,\n targetName: targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId: streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n }, {\n key: \"_deleteStreamController\",\n value: function () {\n var _deleteStreamController2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(streamController, streamId) {\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return Promise.allSettled([streamController.startCall && streamController.startCall.promise, streamController.pullCall && streamController.pullCall.promise, streamController.cancelCall && streamController.cancelCall.promise]);\n\n case 2:\n delete this.streamControllers[streamId];\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _deleteStreamController(_x, _x2) {\n return _deleteStreamController2.apply(this, arguments);\n }\n\n return _deleteStreamController;\n }()\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n }]);\n\n return MessageHandler;\n}();\n\nexports.MessageHandler = MessageHandler;\n\n/***/ }),\n/* 144 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Metadata = void 0;\n\nvar _util = __w_pdfjs_require__(4);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\n\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\n\nfunction _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\"); return _classApplyDescriptorGet(receiver, descriptor); }\n\nfunction _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }\n\nfunction _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\n\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError(\"attempted to \" + action + \" private field on non-instance\"); } return privateMap.get(receiver); }\n\nfunction _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError(\"attempted to set read only private field\"); } descriptor.value = value; } }\n\nvar _metadataMap = /*#__PURE__*/new WeakMap();\n\nvar _data = /*#__PURE__*/new WeakMap();\n\nvar Metadata = /*#__PURE__*/function () {\n function Metadata(_ref) {\n var parsedData = _ref.parsedData,\n rawData = _ref.rawData;\n\n _classCallCheck(this, Metadata);\n\n _classPrivateFieldInitSpec(this, _metadataMap, {\n writable: true,\n value: void 0\n });\n\n _classPrivateFieldInitSpec(this, _data, {\n writable: true,\n value: void 0\n });\n\n _classPrivateFieldSet(this, _metadataMap, parsedData);\n\n _classPrivateFieldSet(this, _data, rawData);\n }\n\n _createClass(Metadata, [{\n key: \"getRaw\",\n value: function getRaw() {\n return _classPrivateFieldGet(this, _data);\n }\n }, {\n key: \"get\",\n value: function get(name) {\n var _classPrivateFieldGet2;\n\n return (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _metadataMap).get(name)) !== null && _classPrivateFieldGet2 !== void 0 ? _classPrivateFieldGet2 : null;\n }\n }, {\n key: \"getAll\",\n value: function getAll() {\n return (0, _util.objectFromMap)(_classPrivateFieldGet(this, _metadataMap));\n }\n }, {\n key: \"has\",\n value: function has(name) {\n return _classPrivateFieldGet(this, _metadataMap).has(name);\n }\n }]);\n\n return Metadata;\n}();\n\nexports.Metadata = Metadata;\n\n/***/ }),\n/* 145 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.OptionalContentConfig = void 0;\n\nvar _util = __w_pdfjs_require__(4);\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OptionalContentGroup = function OptionalContentGroup(name, intent) {\n _classCallCheck(this, OptionalContentGroup);\n\n this.visible = true;\n this.name = name;\n this.intent = intent;\n};\n\nvar OptionalContentConfig = /*#__PURE__*/function () {\n function OptionalContentConfig(data) {\n _classCallCheck(this, OptionalContentConfig);\n\n this.name = null;\n this.creator = null;\n this._order = null;\n this._groups = new Map();\n\n if (data === null) {\n return;\n }\n\n this.name = data.name;\n this.creator = data.creator;\n this._order = data.order;\n\n var _iterator = _createForOfIteratorHelper(data.groups),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _group = _step.value;\n\n this._groups.set(_group.id, new OptionalContentGroup(_group.name, _group.intent));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n if (data.baseState === \"OFF\") {\n var _iterator2 = _createForOfIteratorHelper(this._groups),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var group = _step2.value;\n group.visible = false;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n\n var _iterator3 = _createForOfIteratorHelper(data.on),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var on = _step3.value;\n this._groups.get(on).visible = true;\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n var _iterator4 = _createForOfIteratorHelper(data.off),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var off = _step4.value;\n this._groups.get(off).visible = false;\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n\n _createClass(OptionalContentConfig, [{\n key: \"_evaluateVisibilityExpression\",\n value: function _evaluateVisibilityExpression(array) {\n var length = array.length;\n\n if (length < 2) {\n return true;\n }\n\n var operator = array[0];\n\n for (var i = 1; i < length; i++) {\n var element = array[i];\n var state = void 0;\n\n if (Array.isArray(element)) {\n state = this._evaluateVisibilityExpression(element);\n } else if (this._groups.has(element)) {\n state = this._groups.get(element).visible;\n } else {\n (0, _util.warn)(\"Optional content group not found: \".concat(element));\n return true;\n }\n\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n\n break;\n\n case \"Or\":\n if (state) {\n return true;\n }\n\n break;\n\n case \"Not\":\n return !state;\n\n default:\n return true;\n }\n }\n\n return operator === \"And\";\n }\n }, {\n key: \"isVisible\",\n value: function isVisible(group) {\n if (this._groups.size === 0) {\n return true;\n }\n\n if (!group) {\n (0, _util.warn)(\"Optional content group not defined.\");\n return true;\n }\n\n if (group.type === \"OCG\") {\n if (!this._groups.has(group.id)) {\n (0, _util.warn)(\"Optional content group not found: \".concat(group.id));\n return true;\n }\n\n return this._groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this._evaluateVisibilityExpression(group.expression);\n }\n\n if (!group.policy || group.policy === \"AnyOn\") {\n var _iterator5 = _createForOfIteratorHelper(group.ids),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var id = _step5.value;\n\n if (!this._groups.has(id)) {\n (0, _util.warn)(\"Optional content group not found: \".concat(id));\n return true;\n }\n\n if (this._groups.get(id).visible) {\n return true;\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n return false;\n } else if (group.policy === \"AllOn\") {\n var _iterator6 = _createForOfIteratorHelper(group.ids),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var _id = _step6.value;\n\n if (!this._groups.has(_id)) {\n (0, _util.warn)(\"Optional content group not found: \".concat(_id));\n return true;\n }\n\n if (!this._groups.get(_id).visible) {\n return false;\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n return true;\n } else if (group.policy === \"AnyOff\") {\n var _iterator7 = _createForOfIteratorHelper(group.ids),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var _id2 = _step7.value;\n\n if (!this._groups.has(_id2)) {\n (0, _util.warn)(\"Optional content group not found: \".concat(_id2));\n return true;\n }\n\n if (!this._groups.get(_id2).visible) {\n return true;\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n\n return false;\n } else if (group.policy === \"AllOff\") {\n var _iterator8 = _createForOfIteratorHelper(group.ids),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var _id3 = _step8.value;\n\n if (!this._groups.has(_id3)) {\n (0, _util.warn)(\"Optional content group not found: \".concat(_id3));\n return true;\n }\n\n if (this._groups.get(_id3).visible) {\n return false;\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n\n return true;\n }\n\n (0, _util.warn)(\"Unknown optional content policy \".concat(group.policy, \".\"));\n return true;\n }\n\n (0, _util.warn)(\"Unknown group type \".concat(group.type, \".\"));\n return true;\n }\n }, {\n key: \"setVisibility\",\n value: function setVisibility(id) {\n var visible = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (!this._groups.has(id)) {\n (0, _util.warn)(\"Optional content group not found: \".concat(id));\n return;\n }\n\n this._groups.get(id).visible = !!visible;\n }\n }, {\n key: \"getOrder\",\n value: function getOrder() {\n if (!this._groups.size) {\n return null;\n }\n\n if (this._order) {\n return this._order.slice();\n }\n\n return Array.from(this._groups.keys());\n }\n }, {\n key: \"getGroups\",\n value: function getGroups() {\n return this._groups.size > 0 ? (0, _util.objectFromMap)(this._groups) : null;\n }\n }, {\n key: \"getGroup\",\n value: function getGroup(id) {\n return this._groups.get(id) || null;\n }\n }]);\n\n return OptionalContentConfig;\n}();\n\nexports.OptionalContentConfig = OptionalContentConfig;\n\n/***/ }),\n/* 146 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFDataTransportStream = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(4);\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar PDFDataTransportStream = /*#__PURE__*/function () {\n function PDFDataTransportStream(params, pdfDataRangeTransport) {\n var _this = this;\n\n _classCallCheck(this, PDFDataTransportStream);\n\n (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n this._queuedChunks = [];\n this._progressiveDone = params.progressiveDone || false;\n this._contentDispositionFilename = params.contentDispositionFilename || null;\n var initialData = params.initialData;\n\n if ((initialData === null || initialData === void 0 ? void 0 : initialData.length) > 0) {\n var buffer = new Uint8Array(initialData).buffer;\n\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !params.disableStream;\n this._isRangeSupported = !params.disableRange;\n this._contentLength = params.length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener(function (begin, chunk) {\n _this._onReceiveData({\n begin: begin,\n chunk: chunk\n });\n });\n\n this._pdfDataRangeTransport.addProgressListener(function (loaded, total) {\n _this._onProgress({\n loaded: loaded,\n total: total\n });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener(function (chunk) {\n _this._onReceiveData({\n chunk: chunk\n });\n });\n\n this._pdfDataRangeTransport.addProgressiveDoneListener(function () {\n _this._onProgressiveDone();\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n\n _createClass(PDFDataTransportStream, [{\n key: \"_onReceiveData\",\n value: function _onReceiveData(args) {\n var buffer = new Uint8Array(args.chunk).buffer;\n\n if (args.begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n var found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== args.begin) {\n return false;\n }\n\n rangeReader._enqueue(buffer);\n\n return true;\n });\n\n (0, _util.assert)(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n }, {\n key: \"_progressiveDataLength\",\n get: function get() {\n var _this$_fullRequestRea, _this$_fullRequestRea2;\n\n return (_this$_fullRequestRea = (_this$_fullRequestRea2 = this._fullRequestReader) === null || _this$_fullRequestRea2 === void 0 ? void 0 : _this$_fullRequestRea2._loaded) !== null && _this$_fullRequestRea !== void 0 ? _this$_fullRequestRea : 0;\n }\n }, {\n key: \"_onProgress\",\n value: function _onProgress(evt) {\n if (evt.total === undefined) {\n var firstReader = this._rangeReaders[0];\n\n if (firstReader !== null && firstReader !== void 0 && firstReader.onProgress) {\n firstReader.onProgress({\n loaded: evt.loaded\n });\n }\n } else {\n var fullReader = this._fullRequestReader;\n\n if (fullReader !== null && fullReader !== void 0 && fullReader.onProgress) {\n fullReader.onProgress({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n }\n }, {\n key: \"_onProgressiveDone\",\n value: function _onProgressiveDone() {\n if (this._fullRequestReader) {\n this._fullRequestReader.progressiveDone();\n }\n\n this._progressiveDone = true;\n }\n }, {\n key: \"_removeRangeReader\",\n value: function _removeRangeReader(reader) {\n var i = this._rangeReaders.indexOf(reader);\n\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n }, {\n key: \"getFullReader\",\n value: function getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n var queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n }, {\n key: \"getRangeReader\",\n value: function getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n var reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n\n this._rangeReaders.push(reader);\n\n return reader;\n }\n }, {\n key: \"cancelAllRequests\",\n value: function cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n var _iterator = _createForOfIteratorHelper(this._rangeReaders.slice(0)),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var reader = _step.value;\n reader.cancel(reason);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n this._pdfDataRangeTransport.abort();\n }\n }]);\n\n return PDFDataTransportStream;\n}();\n\nexports.PDFDataTransportStream = PDFDataTransportStream;\n\nvar PDFDataTransportStreamReader = /*#__PURE__*/function () {\n function PDFDataTransportStreamReader(stream, queuedChunks) {\n var progressiveDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var contentDispositionFilename = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n _classCallCheck(this, PDFDataTransportStreamReader);\n\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n\n var _iterator2 = _createForOfIteratorHelper(this._queuedChunks),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var chunk = _step2.value;\n this._loaded += chunk.byteLength;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n\n _createClass(PDFDataTransportStreamReader, [{\n key: \"_enqueue\",\n value: function _enqueue(chunk) {\n if (this._done) {\n return;\n }\n\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n\n this._loaded += chunk.byteLength;\n }\n }, {\n key: \"headersReady\",\n get: function get() {\n return this._headersReady;\n }\n }, {\n key: \"filename\",\n get: function get() {\n return this._filename;\n }\n }, {\n key: \"isRangeSupported\",\n get: function get() {\n return this._stream._isRangeSupported;\n }\n }, {\n key: \"isStreamingSupported\",\n get: function get() {\n return this._stream._isStreamingSupported;\n }\n }, {\n key: \"contentLength\",\n get: function get() {\n return this._stream._contentLength;\n }\n }, {\n key: \"read\",\n value: function () {\n var _read = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee() {\n var chunk, requestCapability;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(this._queuedChunks.length > 0)) {\n _context.next = 3;\n break;\n }\n\n chunk = this._queuedChunks.shift();\n return _context.abrupt(\"return\", {\n value: chunk,\n done: false\n });\n\n case 3:\n if (!this._done) {\n _context.next = 5;\n break;\n }\n\n return _context.abrupt(\"return\", {\n value: undefined,\n done: true\n });\n\n case 5:\n requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return _context.abrupt(\"return\", requestCapability.promise);\n\n case 8:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function read() {\n return _read.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n this._done = true;\n\n var _iterator3 = _createForOfIteratorHelper(this._requests),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var requestCapability = _step3.value;\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n this._requests.length = 0;\n }\n }, {\n key: \"progressiveDone\",\n value: function progressiveDone() {\n if (this._done) {\n return;\n }\n\n this._done = true;\n }\n }]);\n\n return PDFDataTransportStreamReader;\n}();\n\nvar PDFDataTransportStreamRangeReader = /*#__PURE__*/function () {\n function PDFDataTransportStreamRangeReader(stream, begin, end) {\n _classCallCheck(this, PDFDataTransportStreamRangeReader);\n\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n\n _createClass(PDFDataTransportStreamRangeReader, [{\n key: \"_enqueue\",\n value: function _enqueue(chunk) {\n if (this._done) {\n return;\n }\n\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n var requestsCapability = this._requests.shift();\n\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n\n var _iterator4 = _createForOfIteratorHelper(this._requests),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var requestCapability = _step4.value;\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n this._requests.length = 0;\n }\n\n this._done = true;\n\n this._stream._removeRangeReader(this);\n }\n }, {\n key: \"isStreamingSupported\",\n get: function get() {\n return false;\n }\n }, {\n key: \"read\",\n value: function () {\n var _read2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2() {\n var chunk, requestCapability;\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!this._queuedChunk) {\n _context2.next = 4;\n break;\n }\n\n chunk = this._queuedChunk;\n this._queuedChunk = null;\n return _context2.abrupt(\"return\", {\n value: chunk,\n done: false\n });\n\n case 4:\n if (!this._done) {\n _context2.next = 6;\n break;\n }\n\n return _context2.abrupt(\"return\", {\n value: undefined,\n done: true\n });\n\n case 6:\n requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return _context2.abrupt(\"return\", requestCapability.promise);\n\n case 9:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function read() {\n return _read2.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n this._done = true;\n\n var _iterator5 = _createForOfIteratorHelper(this._requests),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var requestCapability = _step5.value;\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n this._requests.length = 0;\n\n this._stream._removeRangeReader(this);\n }\n }]);\n\n return PDFDataTransportStreamRangeReader;\n}();\n\n/***/ }),\n/* 147 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.XfaText = void 0;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar XfaText = /*#__PURE__*/function () {\n function XfaText() {\n _classCallCheck(this, XfaText);\n }\n\n _createClass(XfaText, null, [{\n key: \"textContent\",\n value: function textContent(xfa) {\n var items = [];\n var output = {\n items: items,\n styles: Object.create(null)\n };\n\n function walk(node) {\n var _node$attributes;\n\n if (!node) {\n return;\n }\n\n var str = null;\n var name = node.name;\n\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node !== null && node !== void 0 && (_node$attributes = node.attributes) !== null && _node$attributes !== void 0 && _node$attributes.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n\n if (str !== null) {\n items.push({\n str: str\n });\n }\n\n if (!node.children) {\n return;\n }\n\n var _iterator = _createForOfIteratorHelper(node.children),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n walk(child);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n walk(xfa);\n return output;\n }\n }, {\n key: \"shouldBuildText\",\n value: function shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n }]);\n\n return XfaText;\n}();\n\nexports.XfaText = XfaText;\n\n/***/ }),\n/* 148 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.AnnotationLayer = void 0;\n\nvar _util = __w_pdfjs_require__(4);\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _annotation_storage = __w_pdfjs_require__(139);\n\nvar _scripting_utils = __w_pdfjs_require__(149);\n\nvar _xfa_layer = __w_pdfjs_require__(150);\n\nfunction _classStaticPrivateMethodGet(receiver, classConstructor, method) { _classCheckPrivateStaticAccess(receiver, classConstructor); return method; }\n\nfunction _classCheckPrivateStaticAccess(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError(\"Private static access of wrong provenance\"); } }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar DEFAULT_TAB_INDEX = 1000;\nvar GetElementsByNameSet = new WeakSet();\n\nvar AnnotationElementFactory = /*#__PURE__*/function () {\n function AnnotationElementFactory() {\n _classCallCheck(this, AnnotationElementFactory);\n }\n\n _createClass(AnnotationElementFactory, null, [{\n key: \"create\",\n value: function create(parameters) {\n var subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case _util.AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case _util.AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case _util.AnnotationType.WIDGET:\n var fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n\n return new PushButtonWidgetAnnotationElement(parameters);\n\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n }\n\n return new WidgetAnnotationElement(parameters);\n\n case _util.AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case _util.AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case _util.AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case _util.AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case _util.AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case _util.AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case _util.AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case _util.AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case _util.AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case _util.AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case _util.AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case _util.AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case _util.AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case _util.AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case _util.AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n }]);\n\n return AnnotationElementFactory;\n}();\n\nvar AnnotationElement = /*#__PURE__*/function () {\n function AnnotationElement(parameters) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$isRenderable = _ref.isRenderable,\n isRenderable = _ref$isRenderable === void 0 ? false : _ref$isRenderable,\n _ref$ignoreBorder = _ref.ignoreBorder,\n ignoreBorder = _ref$ignoreBorder === void 0 ? false : _ref$ignoreBorder,\n _ref$createQuadrilate = _ref.createQuadrilaterals,\n createQuadrilaterals = _ref$createQuadrilate === void 0 ? false : _ref$createQuadrilate;\n\n _classCallCheck(this, AnnotationElement);\n\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.page = parameters.page;\n this.viewport = parameters.viewport;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this._mouseState = parameters.mouseState;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n\n if (createQuadrilaterals) {\n this.quadrilaterals = this._createQuadrilaterals(ignoreBorder);\n }\n }\n\n _createClass(AnnotationElement, [{\n key: \"_createContainer\",\n value: function _createContainer() {\n var ignoreBorder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var data = this.data,\n page = this.page,\n viewport = this.viewport;\n var container = document.createElement(\"section\");\n var width = data.rect[2] - data.rect[0];\n var height = data.rect[3] - data.rect[1];\n container.setAttribute(\"data-annotation-id\", data.id);\n\n var rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n\n if (data.hasOwnCanvas) {\n var transform = viewport.transform.slice();\n\n var _Util$singularValueDe = _util.Util.singularValueDecompose2dScale(transform),\n _Util$singularValueDe2 = _slicedToArray(_Util$singularValueDe, 2),\n scaleX = _Util$singularValueDe2[0],\n scaleY = _Util$singularValueDe2[1];\n\n width = Math.ceil(width * scaleX);\n height = Math.ceil(height * scaleY);\n rect[0] *= scaleX;\n rect[1] *= scaleY;\n\n for (var i = 0; i < 4; i++) {\n transform[i] = Math.sign(transform[i]);\n }\n\n container.style.transform = \"matrix(\".concat(transform.join(\",\"), \")\");\n } else {\n container.style.transform = \"matrix(\".concat(viewport.transform.join(\",\"), \")\");\n }\n\n container.style.transformOrigin = \"\".concat(-rect[0], \"px \").concat(-rect[1], \"px\");\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = \"\".concat(data.borderStyle.width, \"px\");\n\n if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) {\n width -= 2 * data.borderStyle.width;\n height -= 2 * data.borderStyle.width;\n }\n\n var horizontalRadius = data.borderStyle.horizontalCornerRadius;\n var verticalRadius = data.borderStyle.verticalCornerRadius;\n\n if (horizontalRadius > 0 || verticalRadius > 0) {\n var radius = \"\".concat(horizontalRadius, \"px / \").concat(verticalRadius, \"px\");\n container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case _util.AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case _util.AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case _util.AnnotationBorderStyleType.BEVELED:\n (0, _util.warn)(\"Unimplemented border style: beveled\");\n break;\n\n case _util.AnnotationBorderStyleType.INSET:\n (0, _util.warn)(\"Unimplemented border style: inset\");\n break;\n\n case _util.AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n var borderColor = data.borderColor || data.color || null;\n\n if (borderColor) {\n container.style.borderColor = _util.Util.makeHexColor(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);\n } else {\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = \"\".concat(rect[0], \"px\");\n container.style.top = \"\".concat(rect[1], \"px\");\n\n if (data.hasOwnCanvas) {\n container.style.width = container.style.height = \"auto\";\n } else {\n container.style.width = \"\".concat(width, \"px\");\n container.style.height = \"\".concat(height, \"px\");\n }\n\n return container;\n }\n }, {\n key: \"_createQuadrilaterals\",\n value: function _createQuadrilaterals() {\n var ignoreBorder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (!this.data.quadPoints) {\n return null;\n }\n\n var quadrilaterals = [];\n var savedRect = this.data.rect;\n\n var _iterator = _createForOfIteratorHelper(this.data.quadPoints),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var quadPoint = _step.value;\n this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y];\n quadrilaterals.push(this._createContainer(ignoreBorder));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n this.data.rect = savedRect;\n return quadrilaterals;\n }\n }, {\n key: \"_createPopup\",\n value: function _createPopup(trigger, data) {\n var container = this.container;\n\n if (this.quadrilaterals) {\n trigger = trigger || this.quadrilaterals;\n container = this.quadrilaterals[0];\n }\n\n if (!trigger) {\n trigger = document.createElement(\"div\");\n trigger.style.height = container.style.height;\n trigger.style.width = container.style.width;\n container.appendChild(trigger);\n }\n\n var popupElement = new PopupElement({\n container: container,\n trigger: trigger,\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n hideWrapper: true\n });\n var popup = popupElement.render();\n popup.style.left = container.style.width;\n container.appendChild(popup);\n }\n }, {\n key: \"_renderQuadrilaterals\",\n value: function _renderQuadrilaterals(className) {\n var _iterator2 = _createForOfIteratorHelper(this.quadrilaterals),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var quadrilateral = _step2.value;\n quadrilateral.className = className;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return this.quadrilaterals;\n }\n }, {\n key: \"render\",\n value: function render() {\n (0, _util.unreachable)(\"Abstract method `AnnotationElement.render` called\");\n }\n }, {\n key: \"_getElementsByName\",\n value: function _getElementsByName(name) {\n var skipId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var fields = [];\n\n if (this._fieldObjects) {\n var fieldObj = this._fieldObjects[name];\n\n if (fieldObj) {\n var _iterator3 = _createForOfIteratorHelper(fieldObj),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _step3$value = _step3.value,\n page = _step3$value.page,\n id = _step3$value.id,\n exportValues = _step3$value.exportValues;\n\n if (page === -1) {\n continue;\n }\n\n if (id === skipId) {\n continue;\n }\n\n var exportValue = typeof exportValues === \"string\" ? exportValues : null;\n var domElement = document.getElementById(id);\n\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n (0, _util.warn)(\"_getElementsByName - element not allowed: \".concat(id));\n continue;\n }\n\n fields.push({\n id: id,\n exportValue: exportValue,\n domElement: domElement\n });\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n\n return fields;\n }\n\n var _iterator4 = _createForOfIteratorHelper(document.getElementsByName(name)),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _domElement = _step4.value;\n var _id = _domElement.id,\n _exportValue = _domElement.exportValue;\n\n if (_id === skipId) {\n continue;\n }\n\n if (!GetElementsByNameSet.has(_domElement)) {\n continue;\n }\n\n fields.push({\n id: _id,\n exportValue: _exportValue,\n domElement: _domElement\n });\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n return fields;\n }\n }], [{\n key: \"platform\",\n get: function get() {\n var platform = typeof navigator !== \"undefined\" ? navigator.platform : \"\";\n return (0, _util.shadow)(this, \"platform\", {\n isWin: platform.includes(\"Win\"),\n isMac: platform.includes(\"Mac\")\n });\n }\n }]);\n\n return AnnotationElement;\n}();\n\nvar LinkAnnotationElement = /*#__PURE__*/function (_AnnotationElement) {\n _inherits(LinkAnnotationElement, _AnnotationElement);\n\n var _super = _createSuper(LinkAnnotationElement);\n\n function LinkAnnotationElement(parameters) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n _classCallCheck(this, LinkAnnotationElement);\n\n var isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action || parameters.data.isTooltipOnly || parameters.data.resetForm || parameters.data.actions && (parameters.data.actions.Action || parameters.data.actions[\"Mouse Up\"] || parameters.data.actions[\"Mouse Down\"]));\n return _super.call(this, parameters, {\n isRenderable: isRenderable,\n ignoreBorder: !!(options !== null && options !== void 0 && options.ignoreBorder),\n createQuadrilaterals: true\n });\n }\n\n _createClass(LinkAnnotationElement, [{\n key: \"render\",\n value: function render() {\n var data = this.data,\n linkService = this.linkService;\n var link = document.createElement(\"a\");\n\n if (data.url) {\n var _linkService$addLinkA;\n\n if (!linkService.addLinkAttributes) {\n (0, _util.warn)(\"LinkAnnotationElement.render - missing `addLinkAttributes`-method on the `linkService`-instance.\");\n }\n\n (_linkService$addLinkA = linkService.addLinkAttributes) === null || _linkService$addLinkA === void 0 ? void 0 : _linkService$addLinkA.call(linkService, link, data.url, data.newWindow);\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n } else {\n var hasClickAction = false;\n\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n hasClickAction = true;\n\n this._bindJSAction(link, data);\n }\n\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n } else if (!hasClickAction) {\n this._bindLink(link, \"\");\n }\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"linkAnnotation\").map(function (quadrilateral, index) {\n var linkElement = index === 0 ? link : link.cloneNode();\n quadrilateral.appendChild(linkElement);\n return quadrilateral;\n });\n }\n\n this.container.className = \"linkAnnotation\";\n this.container.appendChild(link);\n return this.container;\n }\n }, {\n key: \"_bindLink\",\n value: function _bindLink(link, destination) {\n var _this = this;\n\n link.href = this.linkService.getDestinationHash(destination);\n\n link.onclick = function () {\n if (destination) {\n _this.linkService.goToDestination(destination);\n }\n\n return false;\n };\n\n if (destination || destination === \"\") {\n link.className = \"internalLink\";\n }\n }\n }, {\n key: \"_bindNamedAction\",\n value: function _bindNamedAction(link, action) {\n var _this2 = this;\n\n link.href = this.linkService.getAnchorUrl(\"\");\n\n link.onclick = function () {\n _this2.linkService.executeNamedAction(action);\n\n return false;\n };\n\n link.className = \"internalLink\";\n }\n }, {\n key: \"_bindJSAction\",\n value: function _bindJSAction(link, data) {\n var _this3 = this;\n\n link.href = this.linkService.getAnchorUrl(\"\");\n var map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n\n var _loop = function _loop() {\n var name = _Object$keys[_i2];\n var jsName = map.get(name);\n\n if (!jsName) {\n return \"continue\";\n }\n\n link[jsName] = function () {\n var _this3$linkService$ev;\n\n (_this3$linkService$ev = _this3.linkService.eventBus) === null || _this3$linkService$ev === void 0 ? void 0 : _this3$linkService$ev.dispatch(\"dispatcheventinsandbox\", {\n source: _this3,\n detail: {\n id: data.id,\n name: name\n }\n });\n return false;\n };\n };\n\n for (var _i2 = 0, _Object$keys = Object.keys(data.actions); _i2 < _Object$keys.length; _i2++) {\n var _ret = _loop();\n\n if (_ret === \"continue\") continue;\n }\n\n if (!link.onclick) {\n link.onclick = function () {\n return false;\n };\n }\n\n link.className = \"internalLink\";\n }\n }, {\n key: \"_bindResetFormAction\",\n value: function _bindResetFormAction(link, resetForm) {\n var _this4 = this;\n\n var otherClickAction = link.onclick;\n\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n\n link.className = \"internalLink\";\n\n if (!this._fieldObjects) {\n (0, _util.warn)(\"_bindResetFormAction - \\\"resetForm\\\" action not supported, \" + \"ensure that the `fieldObjects` parameter is provided.\");\n\n if (!otherClickAction) {\n link.onclick = function () {\n return false;\n };\n }\n\n return;\n }\n\n link.onclick = function () {\n if (otherClickAction) {\n otherClickAction();\n }\n\n var resetFormFields = resetForm.fields,\n resetFormRefs = resetForm.refs,\n include = resetForm.include;\n var allFields = [];\n\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n var fieldIds = new Set(resetFormRefs);\n\n var _iterator5 = _createForOfIteratorHelper(resetFormFields),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var fieldName = _step5.value;\n\n var _fields = _this4._fieldObjects[fieldName] || [];\n\n var _iterator7 = _createForOfIteratorHelper(_fields),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var id = _step7.value.id;\n fieldIds.add(id);\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n for (var _i3 = 0, _Object$values = Object.values(_this4._fieldObjects); _i3 < _Object$values.length; _i3++) {\n var fields = _Object$values[_i3];\n\n var _iterator6 = _createForOfIteratorHelper(fields),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var field = _step6.value;\n\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n } else {\n for (var _i4 = 0, _Object$values2 = Object.values(_this4._fieldObjects); _i4 < _Object$values2.length; _i4++) {\n var _fields2 = _Object$values2[_i4];\n allFields.push.apply(allFields, _toConsumableArray(_fields2));\n }\n }\n\n var storage = _this4.annotationStorage;\n var allIds = [];\n\n for (var _i5 = 0, _allFields = allFields; _i5 < _allFields.length; _i5++) {\n var _field = _allFields[_i5];\n var _id2 = _field.id;\n allIds.push(_id2);\n\n switch (_field.type) {\n case \"text\":\n {\n var value = _field.defaultValue || \"\";\n storage.setValue(_id2, {\n value: value,\n valueAsString: value\n });\n break;\n }\n\n case \"checkbox\":\n case \"radiobutton\":\n {\n var _value = _field.defaultValue === _field.exportValues;\n\n storage.setValue(_id2, {\n value: _value\n });\n break;\n }\n\n case \"combobox\":\n case \"listbox\":\n {\n var _value2 = _field.defaultValue || \"\";\n\n storage.setValue(_id2, {\n value: _value2\n });\n break;\n }\n\n default:\n continue;\n }\n\n var domElement = document.getElementById(_id2);\n\n if (!domElement || !GetElementsByNameSet.has(domElement)) {\n continue;\n }\n\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n\n if (_this4.enableScripting) {\n var _this4$linkService$ev;\n\n (_this4$linkService$ev = _this4.linkService.eventBus) === null || _this4$linkService$ev === void 0 ? void 0 : _this4$linkService$ev.dispatch(\"dispatcheventinsandbox\", {\n source: _this4,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n\n return false;\n };\n }\n }]);\n\n return LinkAnnotationElement;\n}(AnnotationElement);\n\nvar TextAnnotationElement = /*#__PURE__*/function (_AnnotationElement2) {\n _inherits(TextAnnotationElement, _AnnotationElement2);\n\n var _super2 = _createSuper(TextAnnotationElement);\n\n function TextAnnotationElement(parameters) {\n var _parameters$data$titl, _parameters$data$cont, _parameters$data$rich;\n\n _classCallCheck(this, TextAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl = parameters.data.titleObj) !== null && _parameters$data$titl !== void 0 && _parameters$data$titl.str || (_parameters$data$cont = parameters.data.contentsObj) !== null && _parameters$data$cont !== void 0 && _parameters$data$cont.str || (_parameters$data$rich = parameters.data.richText) !== null && _parameters$data$rich !== void 0 && _parameters$data$rich.str);\n return _super2.call(this, parameters, {\n isRenderable: isRenderable\n });\n }\n\n _createClass(TextAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"textAnnotation\";\n var image = document.createElement(\"img\");\n image.style.height = this.container.style.height;\n image.style.width = this.container.style.width;\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.alt = \"[{{type}} Annotation]\";\n image.dataset.l10nId = \"text_annotation_type\";\n image.dataset.l10nArgs = JSON.stringify({\n type: this.data.name\n });\n\n if (!this.data.hasPopup) {\n this._createPopup(image, this.data);\n }\n\n this.container.appendChild(image);\n return this.container;\n }\n }]);\n\n return TextAnnotationElement;\n}(AnnotationElement);\n\nvar WidgetAnnotationElement = /*#__PURE__*/function (_AnnotationElement3) {\n _inherits(WidgetAnnotationElement, _AnnotationElement3);\n\n var _super3 = _createSuper(WidgetAnnotationElement);\n\n function WidgetAnnotationElement() {\n _classCallCheck(this, WidgetAnnotationElement);\n\n return _super3.apply(this, arguments);\n }\n\n _createClass(WidgetAnnotationElement, [{\n key: \"render\",\n value: function render() {\n if (this.data.alternativeText) {\n this.container.title = this.data.alternativeText;\n }\n\n return this.container;\n }\n }, {\n key: \"_getKeyModifier\",\n value: function _getKeyModifier(event) {\n var _AnnotationElement$pl = AnnotationElement.platform,\n isWin = _AnnotationElement$pl.isWin,\n isMac = _AnnotationElement$pl.isMac;\n return isWin && event.ctrlKey || isMac && event.metaKey;\n }\n }, {\n key: \"_setEventListener\",\n value: function _setEventListener(element, baseName, eventName, valueGetter) {\n var _this5 = this;\n\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, function (event) {\n var _this5$linkService$ev;\n\n (_this5$linkService$ev = _this5.linkService.eventBus) === null || _this5$linkService$ev === void 0 ? void 0 : _this5$linkService$ev.dispatch(\"dispatcheventinsandbox\", {\n source: _this5,\n detail: {\n id: _this5.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: _this5._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, function (event) {\n var _this5$linkService$ev2;\n\n (_this5$linkService$ev2 = _this5.linkService.eventBus) === null || _this5$linkService$ev2 === void 0 ? void 0 : _this5$linkService$ev2.dispatch(\"dispatcheventinsandbox\", {\n source: _this5,\n detail: {\n id: _this5.data.id,\n name: eventName,\n value: event.target.checked\n }\n });\n });\n }\n }\n }, {\n key: \"_setEventListeners\",\n value: function _setEventListeners(element, names, getter) {\n var _iterator8 = _createForOfIteratorHelper(names),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var _this$data$actions;\n\n var _step8$value = _slicedToArray(_step8.value, 2),\n baseName = _step8$value[0],\n eventName = _step8$value[1];\n\n if (eventName === \"Action\" || (_this$data$actions = this.data.actions) !== null && _this$data$actions !== void 0 && _this$data$actions[eventName]) {\n this._setEventListener(element, baseName, eventName, getter);\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n }\n }, {\n key: \"_setBackgroundColor\",\n value: function _setBackgroundColor(element) {\n var color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : _util.Util.makeHexColor(color[0], color[1], color[2]);\n }\n }, {\n key: \"_dispatchEventFromSandbox\",\n value: function _dispatchEventFromSandbox(actions, jsEvent) {\n var _this6 = this;\n\n var setColor = function setColor(jsName, styleName, event) {\n var color = event.detail[jsName];\n event.target.style[styleName] = _scripting_utils.ColorConverters[\"\".concat(color[0], \"_HTML\")](color.slice(1));\n };\n\n var commonActions = {\n display: function display(event) {\n var hidden = event.detail.display % 2 === 1;\n event.target.style.visibility = hidden ? \"hidden\" : \"visible\";\n\n _this6.annotationStorage.setValue(_this6.data.id, {\n hidden: hidden,\n print: event.detail.display === 0 || event.detail.display === 3\n });\n },\n print: function print(event) {\n _this6.annotationStorage.setValue(_this6.data.id, {\n print: event.detail.print\n });\n },\n hidden: function hidden(event) {\n event.target.style.visibility = event.detail.hidden ? \"hidden\" : \"visible\";\n\n _this6.annotationStorage.setValue(_this6.data.id, {\n hidden: event.detail.hidden\n });\n },\n focus: function focus(event) {\n setTimeout(function () {\n return event.target.focus({\n preventScroll: false\n });\n }, 0);\n },\n userName: function userName(event) {\n event.target.title = event.detail.userName;\n },\n readonly: function readonly(event) {\n if (event.detail.readonly) {\n event.target.setAttribute(\"readonly\", \"\");\n } else {\n event.target.removeAttribute(\"readonly\");\n }\n },\n required: function required(event) {\n if (event.detail.required) {\n event.target.setAttribute(\"required\", \"\");\n } else {\n event.target.removeAttribute(\"required\");\n }\n },\n bgColor: function bgColor(event) {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: function fillColor(event) {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: function fgColor(event) {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: function textColor(event) {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: function borderColor(event) {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: function strokeColor(event) {\n setColor(\"strokeColor\", \"borderColor\", event);\n }\n };\n\n for (var _i6 = 0, _Object$keys2 = Object.keys(jsEvent.detail); _i6 < _Object$keys2.length; _i6++) {\n var name = _Object$keys2[_i6];\n var action = actions[name] || commonActions[name];\n\n if (action) {\n action(jsEvent);\n }\n }\n }\n }]);\n\n return WidgetAnnotationElement;\n}(AnnotationElement);\n\nvar TextWidgetAnnotationElement = /*#__PURE__*/function (_WidgetAnnotationElem) {\n _inherits(TextWidgetAnnotationElement, _WidgetAnnotationElem);\n\n var _super4 = _createSuper(TextWidgetAnnotationElement);\n\n function TextWidgetAnnotationElement(parameters) {\n _classCallCheck(this, TextWidgetAnnotationElement);\n\n var isRenderable = parameters.renderForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n return _super4.call(this, parameters, {\n isRenderable: isRenderable\n });\n }\n\n _createClass(TextWidgetAnnotationElement, [{\n key: \"setPropertyOnSiblings\",\n value: function setPropertyOnSiblings(base, key, value, keyInStorage) {\n var storage = this.annotationStorage;\n\n var _iterator9 = _createForOfIteratorHelper(this._getElementsByName(base.name, base.id)),\n _step9;\n\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var element = _step9.value;\n\n if (element.domElement) {\n element.domElement[key] = value;\n }\n\n storage.setValue(element.id, _defineProperty({}, keyInStorage, value));\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this7 = this;\n\n var storage = this.annotationStorage;\n var id = this.data.id;\n this.container.className = \"textWidgetAnnotation\";\n var element = null;\n\n if (this.renderForms) {\n var storedData = storage.getValue(id, {\n value: this.data.fieldValue,\n valueAsString: this.data.fieldValue\n });\n var textContent = storedData.valueAsString || storedData.value || \"\";\n var elementData = {\n userValue: null,\n formattedValue: null,\n beforeInputSelectionRange: null,\n beforeInputValue: null\n };\n\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = textContent;\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", textContent);\n }\n\n GetElementsByNameSet.add(element);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n elementData.userValue = textContent;\n element.setAttribute(\"id\", id);\n element.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: event.target.value\n });\n\n _this7.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n });\n element.addEventListener(\"resetform\", function (event) {\n var defaultValue = _this7.data.defaultFieldValue || \"\";\n element.value = elementData.userValue = defaultValue;\n delete elementData.formattedValue;\n });\n\n var blurListener = function blurListener(event) {\n if (elementData.formattedValue) {\n event.target.value = elementData.formattedValue;\n }\n\n event.target.scrollLeft = 0;\n elementData.beforeInputSelectionRange = null;\n };\n\n if (this.enableScripting && this.hasJSActions) {\n var _this$data$actions2;\n\n element.addEventListener(\"focus\", function (event) {\n if (elementData.userValue) {\n event.target.value = elementData.userValue;\n }\n });\n element.addEventListener(\"updatefromsandbox\", function (jsEvent) {\n var actions = {\n value: function value(event) {\n elementData.userValue = event.detail.value || \"\";\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n\n if (!elementData.formattedValue) {\n event.target.value = elementData.userValue;\n }\n },\n valueAsString: function valueAsString(event) {\n elementData.formattedValue = event.detail.valueAsString || \"\";\n\n if (event.target !== document.activeElement) {\n event.target.value = elementData.formattedValue;\n }\n\n storage.setValue(id, {\n formattedValue: elementData.formattedValue\n });\n },\n selRange: function selRange(event) {\n var _event$detail$selRang = _slicedToArray(event.detail.selRange, 2),\n selStart = _event$detail$selRang[0],\n selEnd = _event$detail$selRang[1];\n\n if (selStart >= 0 && selEnd < event.target.value.length) {\n event.target.setSelectionRange(selStart, selEnd);\n }\n }\n };\n\n _this7._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", function (event) {\n var _this7$linkService$ev;\n\n elementData.beforeInputValue = event.target.value;\n var commitKey = -1;\n\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\") {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n commitKey = 3;\n }\n\n if (commitKey === -1) {\n return;\n }\n\n elementData.userValue = event.target.value;\n (_this7$linkService$ev = _this7.linkService.eventBus) === null || _this7$linkService$ev === void 0 ? void 0 : _this7$linkService$ev.dispatch(\"dispatcheventinsandbox\", {\n source: _this7,\n detail: {\n id: id,\n name: \"Keystroke\",\n value: event.target.value,\n willCommit: true,\n commitKey: commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n var _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", function (event) {\n if (_this7._mouseState.isDown) {\n var _this7$linkService$ev2;\n\n elementData.userValue = event.target.value;\n (_this7$linkService$ev2 = _this7.linkService.eventBus) === null || _this7$linkService$ev2 === void 0 ? void 0 : _this7$linkService$ev2.dispatch(\"dispatcheventinsandbox\", {\n source: _this7,\n detail: {\n id: id,\n name: \"Keystroke\",\n value: event.target.value,\n willCommit: true,\n commitKey: 1,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n\n _blurListener(event);\n });\n element.addEventListener(\"mousedown\", function (event) {\n elementData.beforeInputValue = event.target.value;\n elementData.beforeInputSelectionRange = null;\n });\n element.addEventListener(\"keyup\", function (event) {\n if (event.target.selectionStart === event.target.selectionEnd) {\n elementData.beforeInputSelectionRange = null;\n }\n });\n element.addEventListener(\"select\", function (event) {\n elementData.beforeInputSelectionRange = [event.target.selectionStart, event.target.selectionEnd];\n });\n\n if ((_this$data$actions2 = this.data.actions) !== null && _this$data$actions2 !== void 0 && _this$data$actions2.Keystroke) {\n element.addEventListener(\"input\", function (event) {\n var _this7$linkService$ev3;\n\n var selStart = -1;\n var selEnd = -1;\n\n if (elementData.beforeInputSelectionRange) {\n var _elementData$beforeIn = _slicedToArray(elementData.beforeInputSelectionRange, 2);\n\n selStart = _elementData$beforeIn[0];\n selEnd = _elementData$beforeIn[1];\n }\n\n (_this7$linkService$ev3 = _this7.linkService.eventBus) === null || _this7$linkService$ev3 === void 0 ? void 0 : _this7$linkService$ev3.dispatch(\"dispatcheventinsandbox\", {\n source: _this7,\n detail: {\n id: id,\n name: \"Keystroke\",\n value: elementData.beforeInputValue,\n change: event.data,\n willCommit: false,\n selStart: selStart,\n selEnd: selEnd\n }\n });\n });\n }\n\n this._setEventListeners(element, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], function (event) {\n return event.target.value;\n });\n }\n\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n\n if (this.data.maxLen !== null) {\n element.maxLength = this.data.maxLen;\n }\n\n if (this.data.comb) {\n var fieldWidth = this.data.rect[2] - this.data.rect[0];\n var combWidth = fieldWidth / this.data.maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = \"calc(\".concat(combWidth, \"px - 1ch)\");\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n }\n\n this._setTextStyle(element);\n\n this._setBackgroundColor(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n }, {\n key: \"_setTextStyle\",\n value: function _setTextStyle(element) {\n var TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n var _this$data$defaultApp = this.data.defaultAppearanceData,\n fontSize = _this$data$defaultApp.fontSize,\n fontColor = _this$data$defaultApp.fontColor;\n var style = element.style;\n\n if (fontSize) {\n style.fontSize = \"\".concat(fontSize, \"px\");\n }\n\n style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n }]);\n\n return TextWidgetAnnotationElement;\n}(WidgetAnnotationElement);\n\nvar CheckboxWidgetAnnotationElement = /*#__PURE__*/function (_WidgetAnnotationElem2) {\n _inherits(CheckboxWidgetAnnotationElement, _WidgetAnnotationElem2);\n\n var _super5 = _createSuper(CheckboxWidgetAnnotationElement);\n\n function CheckboxWidgetAnnotationElement(parameters) {\n _classCallCheck(this, CheckboxWidgetAnnotationElement);\n\n return _super5.call(this, parameters, {\n isRenderable: parameters.renderForms\n });\n }\n\n _createClass(CheckboxWidgetAnnotationElement, [{\n key: \"render\",\n value: function render() {\n var _this8 = this;\n\n var storage = this.annotationStorage;\n var data = this.data;\n var id = data.id;\n var value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value: value\n });\n }\n\n this.container.className = \"buttonWidgetAnnotation checkBox\";\n var element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.disabled = data.readOnly;\n element.type = \"checkbox\";\n element.name = data.fieldName;\n\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n\n element.setAttribute(\"id\", id);\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", function (event) {\n var _event$target = event.target,\n name = _event$target.name,\n checked = _event$target.checked;\n\n var _iterator10 = _createForOfIteratorHelper(_this8._getElementsByName(name, id)),\n _step10;\n\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var checkbox = _step10.value;\n var curChecked = checked && checkbox.exportValue === data.exportValue;\n\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", function (event) {\n var defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", function (jsEvent) {\n var actions = {\n value: function value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n\n _this8._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(element, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], function (event) {\n return event.target.checked;\n });\n }\n\n this._setBackgroundColor(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n }]);\n\n return CheckboxWidgetAnnotationElement;\n}(WidgetAnnotationElement);\n\nvar RadioButtonWidgetAnnotationElement = /*#__PURE__*/function (_WidgetAnnotationElem3) {\n _inherits(RadioButtonWidgetAnnotationElement, _WidgetAnnotationElem3);\n\n var _super6 = _createSuper(RadioButtonWidgetAnnotationElement);\n\n function RadioButtonWidgetAnnotationElement(parameters) {\n _classCallCheck(this, RadioButtonWidgetAnnotationElement);\n\n return _super6.call(this, parameters, {\n isRenderable: parameters.renderForms\n });\n }\n\n _createClass(RadioButtonWidgetAnnotationElement, [{\n key: \"render\",\n value: function render() {\n var _this9 = this;\n\n this.container.className = \"buttonWidgetAnnotation radioButton\";\n var storage = this.annotationStorage;\n var data = this.data;\n var id = data.id;\n var value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value: value\n });\n }\n\n var element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.disabled = data.readOnly;\n element.type = \"radio\";\n element.name = data.fieldName;\n\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n\n element.setAttribute(\"id\", id);\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", function (event) {\n var _event$target2 = event.target,\n name = _event$target2.name,\n checked = _event$target2.checked;\n\n var _iterator11 = _createForOfIteratorHelper(_this9._getElementsByName(name, id)),\n _step11;\n\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var radio = _step11.value;\n storage.setValue(radio.id, {\n value: false\n });\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", function (event) {\n var defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n var pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", function (jsEvent) {\n var actions = {\n value: function value(event) {\n var checked = pdfButtonValue === event.detail.value;\n\n var _iterator12 = _createForOfIteratorHelper(_this9._getElementsByName(event.target.name)),\n _step12;\n\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var radio = _step12.value;\n var curChecked = checked && radio.id === id;\n\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n }\n };\n\n _this9._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(element, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], function (event) {\n return event.target.checked;\n });\n }\n\n this._setBackgroundColor(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n }]);\n\n return RadioButtonWidgetAnnotationElement;\n}(WidgetAnnotationElement);\n\nvar PushButtonWidgetAnnotationElement = /*#__PURE__*/function (_LinkAnnotationElemen) {\n _inherits(PushButtonWidgetAnnotationElement, _LinkAnnotationElemen);\n\n var _super7 = _createSuper(PushButtonWidgetAnnotationElement);\n\n function PushButtonWidgetAnnotationElement(parameters) {\n _classCallCheck(this, PushButtonWidgetAnnotationElement);\n\n return _super7.call(this, parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n\n _createClass(PushButtonWidgetAnnotationElement, [{\n key: \"render\",\n value: function render() {\n var container = _get(_getPrototypeOf(PushButtonWidgetAnnotationElement.prototype), \"render\", this).call(this);\n\n container.className = \"buttonWidgetAnnotation pushButton\";\n\n if (this.data.alternativeText) {\n container.title = this.data.alternativeText;\n }\n\n return container;\n }\n }]);\n\n return PushButtonWidgetAnnotationElement;\n}(LinkAnnotationElement);\n\nvar ChoiceWidgetAnnotationElement = /*#__PURE__*/function (_WidgetAnnotationElem4) {\n _inherits(ChoiceWidgetAnnotationElement, _WidgetAnnotationElem4);\n\n var _super8 = _createSuper(ChoiceWidgetAnnotationElement);\n\n function ChoiceWidgetAnnotationElement(parameters) {\n _classCallCheck(this, ChoiceWidgetAnnotationElement);\n\n return _super8.call(this, parameters, {\n isRenderable: parameters.renderForms\n });\n }\n\n _createClass(ChoiceWidgetAnnotationElement, [{\n key: \"render\",\n value: function render() {\n var _this10 = this;\n\n this.container.className = \"choiceWidgetAnnotation\";\n var storage = this.annotationStorage;\n var id = this.data.id;\n storage.getValue(id, {\n value: this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : undefined\n });\n var fontSize = this.data.defaultAppearanceData.fontSize;\n\n if (!fontSize) {\n fontSize = 9;\n }\n\n var fontSizeStyle = \"calc(\".concat(fontSize, \"px * var(--zoom-factor))\");\n var selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.disabled = this.data.readOnly;\n selectElement.name = this.data.fieldName;\n selectElement.setAttribute(\"id\", id);\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n selectElement.style.fontSize = \"\".concat(fontSize, \"px\");\n\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n selectElement.addEventListener(\"resetform\", function (event) {\n var defaultValue = _this10.data.defaultFieldValue;\n\n var _iterator13 = _createForOfIteratorHelper(selectElement.options),\n _step13;\n\n try {\n for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n var option = _step13.value;\n option.selected = option.value === defaultValue;\n }\n } catch (err) {\n _iterator13.e(err);\n } finally {\n _iterator13.f();\n }\n });\n\n var _iterator14 = _createForOfIteratorHelper(this.data.options),\n _step14;\n\n try {\n for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {\n var option = _step14.value;\n var optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n\n if (this.data.combo) {\n optionElement.style.fontSize = fontSizeStyle;\n }\n\n if (this.data.fieldValue.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n }\n\n selectElement.appendChild(optionElement);\n }\n } catch (err) {\n _iterator14.e(err);\n } finally {\n _iterator14.f();\n }\n\n var getValue = function getValue(event, isExport) {\n var name = isExport ? \"value\" : \"textContent\";\n var options = event.target.options;\n\n if (!event.target.multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n\n return Array.prototype.filter.call(options, function (option) {\n return option.selected;\n }).map(function (option) {\n return option[name];\n });\n };\n\n var getItems = function getItems(event) {\n var options = event.target.options;\n return Array.prototype.map.call(options, function (option) {\n return {\n displayValue: option.textContent,\n exportValue: option.value\n };\n });\n };\n\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", function (jsEvent) {\n var actions = {\n value: function value(event) {\n var value = event.detail.value;\n var values = new Set(Array.isArray(value) ? value : [value]);\n\n var _iterator15 = _createForOfIteratorHelper(selectElement.options),\n _step15;\n\n try {\n for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {\n var option = _step15.value;\n option.selected = values.has(option.value);\n }\n } catch (err) {\n _iterator15.e(err);\n } finally {\n _iterator15.f();\n }\n\n storage.setValue(id, {\n value: getValue(event, true)\n });\n },\n multipleSelection: function multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove: function remove(event) {\n var options = selectElement.options;\n var index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n\n if (options.length > 0) {\n var i = Array.prototype.findIndex.call(options, function (option) {\n return option.selected;\n });\n\n if (i === -1) {\n options[0].selected = true;\n }\n }\n\n storage.setValue(id, {\n value: getValue(event, true),\n items: getItems(event)\n });\n },\n clear: function clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n\n storage.setValue(id, {\n value: null,\n items: []\n });\n },\n insert: function insert(event) {\n var _event$detail$insert = event.detail.insert,\n index = _event$detail$insert.index,\n displayValue = _event$detail$insert.displayValue,\n exportValue = _event$detail$insert.exportValue;\n var optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.insertBefore(optionElement, selectElement.children[index]);\n storage.setValue(id, {\n value: getValue(event, true),\n items: getItems(event)\n });\n },\n items: function items(event) {\n var items = event.detail.items;\n\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n\n var _iterator16 = _createForOfIteratorHelper(items),\n _step16;\n\n try {\n for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {\n var item = _step16.value;\n var displayValue = item.displayValue,\n exportValue = item.exportValue;\n var optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.appendChild(optionElement);\n }\n } catch (err) {\n _iterator16.e(err);\n } finally {\n _iterator16.f();\n }\n\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n\n storage.setValue(id, {\n value: getValue(event, true),\n items: getItems(event)\n });\n },\n indices: function indices(event) {\n var indices = new Set(event.detail.indices);\n\n var _iterator17 = _createForOfIteratorHelper(event.target.options),\n _step17;\n\n try {\n for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {\n var option = _step17.value;\n option.selected = indices.has(option.index);\n }\n } catch (err) {\n _iterator17.e(err);\n } finally {\n _iterator17.f();\n }\n\n storage.setValue(id, {\n value: getValue(event, true)\n });\n },\n editable: function editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n\n _this10._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", function (event) {\n var _this10$linkService$e;\n\n var exportValue = getValue(event, true);\n var value = getValue(event, false);\n storage.setValue(id, {\n value: exportValue\n });\n (_this10$linkService$e = _this10.linkService.eventBus) === null || _this10$linkService$e === void 0 ? void 0 : _this10$linkService$e.dispatch(\"dispatcheventinsandbox\", {\n source: _this10,\n detail: {\n id: id,\n name: \"Keystroke\",\n value: value,\n changeEx: exportValue,\n willCommit: true,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n\n this._setEventListeners(selectElement, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"]], function (event) {\n return event.target.checked;\n });\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(event)\n });\n });\n }\n\n this._setBackgroundColor(selectElement);\n\n this.container.appendChild(selectElement);\n return this.container;\n }\n }]);\n\n return ChoiceWidgetAnnotationElement;\n}(WidgetAnnotationElement);\n\nvar PopupAnnotationElement = /*#__PURE__*/function (_AnnotationElement4) {\n _inherits(PopupAnnotationElement, _AnnotationElement4);\n\n var _super9 = _createSuper(PopupAnnotationElement);\n\n function PopupAnnotationElement(parameters) {\n var _parameters$data$titl2, _parameters$data$cont2, _parameters$data$rich2;\n\n _classCallCheck(this, PopupAnnotationElement);\n\n var isRenderable = !!((_parameters$data$titl2 = parameters.data.titleObj) !== null && _parameters$data$titl2 !== void 0 && _parameters$data$titl2.str || (_parameters$data$cont2 = parameters.data.contentsObj) !== null && _parameters$data$cont2 !== void 0 && _parameters$data$cont2.str || (_parameters$data$rich2 = parameters.data.richText) !== null && _parameters$data$rich2 !== void 0 && _parameters$data$rich2.str);\n return _super9.call(this, parameters, {\n isRenderable: isRenderable\n });\n }\n\n _createClass(PopupAnnotationElement, [{\n key: \"render\",\n value: function render() {\n var IGNORE_TYPES = [\"Line\", \"Square\", \"Circle\", \"PolyLine\", \"Polygon\", \"Ink\"];\n this.container.className = \"popupAnnotation\";\n\n if (IGNORE_TYPES.includes(this.data.parentType)) {\n return this.container;\n }\n\n var selector = \"[data-annotation-id=\\\"\".concat(this.data.parentId, \"\\\"]\");\n var parentElements = this.layer.querySelectorAll(selector);\n\n if (parentElements.length === 0) {\n return this.container;\n }\n\n var popup = new PopupElement({\n container: this.container,\n trigger: Array.from(parentElements),\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText\n });\n var page = this.page;\n\n var rect = _util.Util.normalizeRect([this.data.parentRect[0], page.view[3] - this.data.parentRect[1] + page.view[1], this.data.parentRect[2], page.view[3] - this.data.parentRect[3] + page.view[1]]);\n\n var popupLeft = rect[0] + this.data.parentRect[2] - this.data.parentRect[0];\n var popupTop = rect[1];\n this.container.style.transformOrigin = \"\".concat(-popupLeft, \"px \").concat(-popupTop, \"px\");\n this.container.style.left = \"\".concat(popupLeft, \"px\");\n this.container.style.top = \"\".concat(popupTop, \"px\");\n this.container.appendChild(popup.render());\n return this.container;\n }\n }]);\n\n return PopupAnnotationElement;\n}(AnnotationElement);\n\nvar PopupElement = /*#__PURE__*/function () {\n function PopupElement(parameters) {\n _classCallCheck(this, PopupElement);\n\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.titleObj = parameters.titleObj;\n this.modificationDate = parameters.modificationDate;\n this.contentsObj = parameters.contentsObj;\n this.richText = parameters.richText;\n this.hideWrapper = parameters.hideWrapper || false;\n this.pinned = false;\n }\n\n _createClass(PopupElement, [{\n key: \"render\",\n value: function render() {\n var _this$richText, _this$contentsObj;\n\n var BACKGROUND_ENLIGHT = 0.7;\n var wrapper = document.createElement(\"div\");\n wrapper.className = \"popupWrapper\";\n this.hideElement = this.hideWrapper ? wrapper : this.container;\n this.hideElement.hidden = true;\n var popup = document.createElement(\"div\");\n popup.className = \"popup\";\n var color = this.color;\n\n if (color) {\n var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = _util.Util.makeHexColor(r | 0, g | 0, b | 0);\n }\n\n var title = document.createElement(\"h1\");\n title.dir = this.titleObj.dir;\n title.textContent = this.titleObj.str;\n popup.appendChild(title);\n\n var dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate);\n\n if (dateObject) {\n var modificationDate = document.createElement(\"span\");\n modificationDate.className = \"popupDate\";\n modificationDate.textContent = \"{{date}}, {{time}}\";\n modificationDate.dataset.l10nId = \"annotation_date_string\";\n modificationDate.dataset.l10nArgs = JSON.stringify({\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString()\n });\n popup.appendChild(modificationDate);\n }\n\n if ((_this$richText = this.richText) !== null && _this$richText !== void 0 && _this$richText.str && (!((_this$contentsObj = this.contentsObj) !== null && _this$contentsObj !== void 0 && _this$contentsObj.str) || this.contentsObj.str === this.richText.str)) {\n _xfa_layer.XfaLayer.render({\n xfaHtml: this.richText.html,\n intent: \"richText\",\n div: popup\n });\n\n popup.lastChild.className = \"richText popupContent\";\n } else {\n var contents = this._formatContents(this.contentsObj);\n\n popup.appendChild(contents);\n }\n\n if (!Array.isArray(this.trigger)) {\n this.trigger = [this.trigger];\n }\n\n var _iterator18 = _createForOfIteratorHelper(this.trigger),\n _step18;\n\n try {\n for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {\n var element = _step18.value;\n element.addEventListener(\"click\", this._toggle.bind(this));\n element.addEventListener(\"mouseover\", this._show.bind(this, false));\n element.addEventListener(\"mouseout\", this._hide.bind(this, false));\n }\n } catch (err) {\n _iterator18.e(err);\n } finally {\n _iterator18.f();\n }\n\n popup.addEventListener(\"click\", this._hide.bind(this, true));\n wrapper.appendChild(popup);\n return wrapper;\n }\n }, {\n key: \"_formatContents\",\n value: function _formatContents(_ref2) {\n var str = _ref2.str,\n dir = _ref2.dir;\n var p = document.createElement(\"p\");\n p.className = \"popupContent\";\n p.dir = dir;\n var lines = str.split(/(?:\\r\\n?|\\n)/);\n\n for (var i = 0, ii = lines.length; i < ii; ++i) {\n var line = lines[i];\n p.appendChild(document.createTextNode(line));\n\n if (i < ii - 1) {\n p.appendChild(document.createElement(\"br\"));\n }\n }\n\n return p;\n }\n }, {\n key: \"_toggle\",\n value: function _toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n }\n }, {\n key: \"_show\",\n value: function _show() {\n var pin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (pin) {\n this.pinned = true;\n }\n\n if (this.hideElement.hidden) {\n this.hideElement.hidden = false;\n this.container.style.zIndex += 1;\n }\n }\n }, {\n key: \"_hide\",\n value: function _hide() {\n var unpin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (unpin) {\n this.pinned = false;\n }\n\n if (!this.hideElement.hidden && !this.pinned) {\n this.hideElement.hidden = true;\n this.container.style.zIndex -= 1;\n }\n }\n }]);\n\n return PopupElement;\n}();\n\nvar FreeTextAnnotationElement = /*#__PURE__*/function (_AnnotationElement5) {\n _inherits(FreeTextAnnotationElement, _AnnotationElement5);\n\n var _super10 = _createSuper(FreeTextAnnotationElement);\n\n function FreeTextAnnotationElement(parameters) {\n var _parameters$data$titl3, _parameters$data$cont3, _parameters$data$rich3;\n\n _classCallCheck(this, FreeTextAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl3 = parameters.data.titleObj) !== null && _parameters$data$titl3 !== void 0 && _parameters$data$titl3.str || (_parameters$data$cont3 = parameters.data.contentsObj) !== null && _parameters$data$cont3 !== void 0 && _parameters$data$cont3.str || (_parameters$data$rich3 = parameters.data.richText) !== null && _parameters$data$rich3 !== void 0 && _parameters$data$rich3.str);\n return _super10.call(this, parameters, {\n isRenderable: isRenderable,\n ignoreBorder: true\n });\n }\n\n _createClass(FreeTextAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"freeTextAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n return this.container;\n }\n }]);\n\n return FreeTextAnnotationElement;\n}(AnnotationElement);\n\nvar LineAnnotationElement = /*#__PURE__*/function (_AnnotationElement6) {\n _inherits(LineAnnotationElement, _AnnotationElement6);\n\n var _super11 = _createSuper(LineAnnotationElement);\n\n function LineAnnotationElement(parameters) {\n var _parameters$data$titl4, _parameters$data$cont4, _parameters$data$rich4;\n\n _classCallCheck(this, LineAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl4 = parameters.data.titleObj) !== null && _parameters$data$titl4 !== void 0 && _parameters$data$titl4.str || (_parameters$data$cont4 = parameters.data.contentsObj) !== null && _parameters$data$cont4 !== void 0 && _parameters$data$cont4.str || (_parameters$data$rich4 = parameters.data.richText) !== null && _parameters$data$rich4 !== void 0 && _parameters$data$rich4.str);\n return _super11.call(this, parameters, {\n isRenderable: isRenderable,\n ignoreBorder: true\n });\n }\n\n _createClass(LineAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"lineAnnotation\";\n var data = this.data;\n var width = data.rect[2] - data.rect[0];\n var height = data.rect[3] - data.rect[1];\n var svg = this.svgFactory.create(width, height);\n var line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.appendChild(line);\n this.container.append(svg);\n\n this._createPopup(line, data);\n\n return this.container;\n }\n }]);\n\n return LineAnnotationElement;\n}(AnnotationElement);\n\nvar SquareAnnotationElement = /*#__PURE__*/function (_AnnotationElement7) {\n _inherits(SquareAnnotationElement, _AnnotationElement7);\n\n var _super12 = _createSuper(SquareAnnotationElement);\n\n function SquareAnnotationElement(parameters) {\n var _parameters$data$titl5, _parameters$data$cont5, _parameters$data$rich5;\n\n _classCallCheck(this, SquareAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl5 = parameters.data.titleObj) !== null && _parameters$data$titl5 !== void 0 && _parameters$data$titl5.str || (_parameters$data$cont5 = parameters.data.contentsObj) !== null && _parameters$data$cont5 !== void 0 && _parameters$data$cont5.str || (_parameters$data$rich5 = parameters.data.richText) !== null && _parameters$data$rich5 !== void 0 && _parameters$data$rich5.str);\n return _super12.call(this, parameters, {\n isRenderable: isRenderable,\n ignoreBorder: true\n });\n }\n\n _createClass(SquareAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"squareAnnotation\";\n var data = this.data;\n var width = data.rect[2] - data.rect[0];\n var height = data.rect[3] - data.rect[1];\n var svg = this.svgFactory.create(width, height);\n var borderWidth = data.borderStyle.width;\n var square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.appendChild(square);\n this.container.append(svg);\n\n this._createPopup(square, data);\n\n return this.container;\n }\n }]);\n\n return SquareAnnotationElement;\n}(AnnotationElement);\n\nvar CircleAnnotationElement = /*#__PURE__*/function (_AnnotationElement8) {\n _inherits(CircleAnnotationElement, _AnnotationElement8);\n\n var _super13 = _createSuper(CircleAnnotationElement);\n\n function CircleAnnotationElement(parameters) {\n var _parameters$data$titl6, _parameters$data$cont6, _parameters$data$rich6;\n\n _classCallCheck(this, CircleAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl6 = parameters.data.titleObj) !== null && _parameters$data$titl6 !== void 0 && _parameters$data$titl6.str || (_parameters$data$cont6 = parameters.data.contentsObj) !== null && _parameters$data$cont6 !== void 0 && _parameters$data$cont6.str || (_parameters$data$rich6 = parameters.data.richText) !== null && _parameters$data$rich6 !== void 0 && _parameters$data$rich6.str);\n return _super13.call(this, parameters, {\n isRenderable: isRenderable,\n ignoreBorder: true\n });\n }\n\n _createClass(CircleAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"circleAnnotation\";\n var data = this.data;\n var width = data.rect[2] - data.rect[0];\n var height = data.rect[3] - data.rect[1];\n var svg = this.svgFactory.create(width, height);\n var borderWidth = data.borderStyle.width;\n var circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.appendChild(circle);\n this.container.append(svg);\n\n this._createPopup(circle, data);\n\n return this.container;\n }\n }]);\n\n return CircleAnnotationElement;\n}(AnnotationElement);\n\nvar PolylineAnnotationElement = /*#__PURE__*/function (_AnnotationElement9) {\n _inherits(PolylineAnnotationElement, _AnnotationElement9);\n\n var _super14 = _createSuper(PolylineAnnotationElement);\n\n function PolylineAnnotationElement(parameters) {\n var _parameters$data$titl7, _parameters$data$cont7, _parameters$data$rich7;\n\n var _this11;\n\n _classCallCheck(this, PolylineAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl7 = parameters.data.titleObj) !== null && _parameters$data$titl7 !== void 0 && _parameters$data$titl7.str || (_parameters$data$cont7 = parameters.data.contentsObj) !== null && _parameters$data$cont7 !== void 0 && _parameters$data$cont7.str || (_parameters$data$rich7 = parameters.data.richText) !== null && _parameters$data$rich7 !== void 0 && _parameters$data$rich7.str);\n _this11 = _super14.call(this, parameters, {\n isRenderable: isRenderable,\n ignoreBorder: true\n });\n _this11.containerClassName = \"polylineAnnotation\";\n _this11.svgElementName = \"svg:polyline\";\n return _this11;\n }\n\n _createClass(PolylineAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = this.containerClassName;\n var data = this.data;\n var width = data.rect[2] - data.rect[0];\n var height = data.rect[3] - data.rect[1];\n var svg = this.svgFactory.create(width, height);\n var points = [];\n\n var _iterator19 = _createForOfIteratorHelper(data.vertices),\n _step19;\n\n try {\n for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {\n var coordinate = _step19.value;\n var x = coordinate.x - data.rect[0];\n var y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n } catch (err) {\n _iterator19.e(err);\n } finally {\n _iterator19.f();\n }\n\n points = points.join(\" \");\n var polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.appendChild(polyline);\n this.container.append(svg);\n\n this._createPopup(polyline, data);\n\n return this.container;\n }\n }]);\n\n return PolylineAnnotationElement;\n}(AnnotationElement);\n\nvar PolygonAnnotationElement = /*#__PURE__*/function (_PolylineAnnotationEl) {\n _inherits(PolygonAnnotationElement, _PolylineAnnotationEl);\n\n var _super15 = _createSuper(PolygonAnnotationElement);\n\n function PolygonAnnotationElement(parameters) {\n var _this12;\n\n _classCallCheck(this, PolygonAnnotationElement);\n\n _this12 = _super15.call(this, parameters);\n _this12.containerClassName = \"polygonAnnotation\";\n _this12.svgElementName = \"svg:polygon\";\n return _this12;\n }\n\n return PolygonAnnotationElement;\n}(PolylineAnnotationElement);\n\nvar CaretAnnotationElement = /*#__PURE__*/function (_AnnotationElement10) {\n _inherits(CaretAnnotationElement, _AnnotationElement10);\n\n var _super16 = _createSuper(CaretAnnotationElement);\n\n function CaretAnnotationElement(parameters) {\n var _parameters$data$titl8, _parameters$data$cont8, _parameters$data$rich8;\n\n _classCallCheck(this, CaretAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl8 = parameters.data.titleObj) !== null && _parameters$data$titl8 !== void 0 && _parameters$data$titl8.str || (_parameters$data$cont8 = parameters.data.contentsObj) !== null && _parameters$data$cont8 !== void 0 && _parameters$data$cont8.str || (_parameters$data$rich8 = parameters.data.richText) !== null && _parameters$data$rich8 !== void 0 && _parameters$data$rich8.str);\n return _super16.call(this, parameters, {\n isRenderable: isRenderable,\n ignoreBorder: true\n });\n }\n\n _createClass(CaretAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"caretAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n return this.container;\n }\n }]);\n\n return CaretAnnotationElement;\n}(AnnotationElement);\n\nvar InkAnnotationElement = /*#__PURE__*/function (_AnnotationElement11) {\n _inherits(InkAnnotationElement, _AnnotationElement11);\n\n var _super17 = _createSuper(InkAnnotationElement);\n\n function InkAnnotationElement(parameters) {\n var _parameters$data$titl9, _parameters$data$cont9, _parameters$data$rich9;\n\n var _this13;\n\n _classCallCheck(this, InkAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl9 = parameters.data.titleObj) !== null && _parameters$data$titl9 !== void 0 && _parameters$data$titl9.str || (_parameters$data$cont9 = parameters.data.contentsObj) !== null && _parameters$data$cont9 !== void 0 && _parameters$data$cont9.str || (_parameters$data$rich9 = parameters.data.richText) !== null && _parameters$data$rich9 !== void 0 && _parameters$data$rich9.str);\n _this13 = _super17.call(this, parameters, {\n isRenderable: isRenderable,\n ignoreBorder: true\n });\n _this13.containerClassName = \"inkAnnotation\";\n _this13.svgElementName = \"svg:polyline\";\n return _this13;\n }\n\n _createClass(InkAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = this.containerClassName;\n var data = this.data;\n var width = data.rect[2] - data.rect[0];\n var height = data.rect[3] - data.rect[1];\n var svg = this.svgFactory.create(width, height);\n\n var _iterator20 = _createForOfIteratorHelper(data.inkLists),\n _step20;\n\n try {\n for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {\n var inkList = _step20.value;\n var points = [];\n\n var _iterator21 = _createForOfIteratorHelper(inkList),\n _step21;\n\n try {\n for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {\n var coordinate = _step21.value;\n var x = coordinate.x - data.rect[0];\n var y = data.rect[3] - coordinate.y;\n points.push(\"\".concat(x, \",\").concat(y));\n }\n } catch (err) {\n _iterator21.e(err);\n } finally {\n _iterator21.f();\n }\n\n points = points.join(\" \");\n var polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n this._createPopup(polyline, data);\n\n svg.appendChild(polyline);\n }\n } catch (err) {\n _iterator20.e(err);\n } finally {\n _iterator20.f();\n }\n\n this.container.append(svg);\n return this.container;\n }\n }]);\n\n return InkAnnotationElement;\n}(AnnotationElement);\n\nvar HighlightAnnotationElement = /*#__PURE__*/function (_AnnotationElement12) {\n _inherits(HighlightAnnotationElement, _AnnotationElement12);\n\n var _super18 = _createSuper(HighlightAnnotationElement);\n\n function HighlightAnnotationElement(parameters) {\n var _parameters$data$titl10, _parameters$data$cont10, _parameters$data$rich10;\n\n _classCallCheck(this, HighlightAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl10 = parameters.data.titleObj) !== null && _parameters$data$titl10 !== void 0 && _parameters$data$titl10.str || (_parameters$data$cont10 = parameters.data.contentsObj) !== null && _parameters$data$cont10 !== void 0 && _parameters$data$cont10.str || (_parameters$data$rich10 = parameters.data.richText) !== null && _parameters$data$rich10 !== void 0 && _parameters$data$rich10.str);\n return _super18.call(this, parameters, {\n isRenderable: isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n\n _createClass(HighlightAnnotationElement, [{\n key: \"render\",\n value: function render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"highlightAnnotation\");\n }\n\n this.container.className = \"highlightAnnotation\";\n return this.container;\n }\n }]);\n\n return HighlightAnnotationElement;\n}(AnnotationElement);\n\nvar UnderlineAnnotationElement = /*#__PURE__*/function (_AnnotationElement13) {\n _inherits(UnderlineAnnotationElement, _AnnotationElement13);\n\n var _super19 = _createSuper(UnderlineAnnotationElement);\n\n function UnderlineAnnotationElement(parameters) {\n var _parameters$data$titl11, _parameters$data$cont11, _parameters$data$rich11;\n\n _classCallCheck(this, UnderlineAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl11 = parameters.data.titleObj) !== null && _parameters$data$titl11 !== void 0 && _parameters$data$titl11.str || (_parameters$data$cont11 = parameters.data.contentsObj) !== null && _parameters$data$cont11 !== void 0 && _parameters$data$cont11.str || (_parameters$data$rich11 = parameters.data.richText) !== null && _parameters$data$rich11 !== void 0 && _parameters$data$rich11.str);\n return _super19.call(this, parameters, {\n isRenderable: isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n\n _createClass(UnderlineAnnotationElement, [{\n key: \"render\",\n value: function render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"underlineAnnotation\");\n }\n\n this.container.className = \"underlineAnnotation\";\n return this.container;\n }\n }]);\n\n return UnderlineAnnotationElement;\n}(AnnotationElement);\n\nvar SquigglyAnnotationElement = /*#__PURE__*/function (_AnnotationElement14) {\n _inherits(SquigglyAnnotationElement, _AnnotationElement14);\n\n var _super20 = _createSuper(SquigglyAnnotationElement);\n\n function SquigglyAnnotationElement(parameters) {\n var _parameters$data$titl12, _parameters$data$cont12, _parameters$data$rich12;\n\n _classCallCheck(this, SquigglyAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl12 = parameters.data.titleObj) !== null && _parameters$data$titl12 !== void 0 && _parameters$data$titl12.str || (_parameters$data$cont12 = parameters.data.contentsObj) !== null && _parameters$data$cont12 !== void 0 && _parameters$data$cont12.str || (_parameters$data$rich12 = parameters.data.richText) !== null && _parameters$data$rich12 !== void 0 && _parameters$data$rich12.str);\n return _super20.call(this, parameters, {\n isRenderable: isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n\n _createClass(SquigglyAnnotationElement, [{\n key: \"render\",\n value: function render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"squigglyAnnotation\");\n }\n\n this.container.className = \"squigglyAnnotation\";\n return this.container;\n }\n }]);\n\n return SquigglyAnnotationElement;\n}(AnnotationElement);\n\nvar StrikeOutAnnotationElement = /*#__PURE__*/function (_AnnotationElement15) {\n _inherits(StrikeOutAnnotationElement, _AnnotationElement15);\n\n var _super21 = _createSuper(StrikeOutAnnotationElement);\n\n function StrikeOutAnnotationElement(parameters) {\n var _parameters$data$titl13, _parameters$data$cont13, _parameters$data$rich13;\n\n _classCallCheck(this, StrikeOutAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl13 = parameters.data.titleObj) !== null && _parameters$data$titl13 !== void 0 && _parameters$data$titl13.str || (_parameters$data$cont13 = parameters.data.contentsObj) !== null && _parameters$data$cont13 !== void 0 && _parameters$data$cont13.str || (_parameters$data$rich13 = parameters.data.richText) !== null && _parameters$data$rich13 !== void 0 && _parameters$data$rich13.str);\n return _super21.call(this, parameters, {\n isRenderable: isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n\n _createClass(StrikeOutAnnotationElement, [{\n key: \"render\",\n value: function render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"strikeoutAnnotation\");\n }\n\n this.container.className = \"strikeoutAnnotation\";\n return this.container;\n }\n }]);\n\n return StrikeOutAnnotationElement;\n}(AnnotationElement);\n\nvar StampAnnotationElement = /*#__PURE__*/function (_AnnotationElement16) {\n _inherits(StampAnnotationElement, _AnnotationElement16);\n\n var _super22 = _createSuper(StampAnnotationElement);\n\n function StampAnnotationElement(parameters) {\n var _parameters$data$titl14, _parameters$data$cont14, _parameters$data$rich14;\n\n _classCallCheck(this, StampAnnotationElement);\n\n var isRenderable = !!(parameters.data.hasPopup || (_parameters$data$titl14 = parameters.data.titleObj) !== null && _parameters$data$titl14 !== void 0 && _parameters$data$titl14.str || (_parameters$data$cont14 = parameters.data.contentsObj) !== null && _parameters$data$cont14 !== void 0 && _parameters$data$cont14.str || (_parameters$data$rich14 = parameters.data.richText) !== null && _parameters$data$rich14 !== void 0 && _parameters$data$rich14.str);\n return _super22.call(this, parameters, {\n isRenderable: isRenderable,\n ignoreBorder: true\n });\n }\n\n _createClass(StampAnnotationElement, [{\n key: \"render\",\n value: function render() {\n this.container.className = \"stampAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n return this.container;\n }\n }]);\n\n return StampAnnotationElement;\n}(AnnotationElement);\n\nvar FileAttachmentAnnotationElement = /*#__PURE__*/function (_AnnotationElement17) {\n _inherits(FileAttachmentAnnotationElement, _AnnotationElement17);\n\n var _super23 = _createSuper(FileAttachmentAnnotationElement);\n\n function FileAttachmentAnnotationElement(parameters) {\n var _this14$linkService$e;\n\n var _this14;\n\n _classCallCheck(this, FileAttachmentAnnotationElement);\n\n _this14 = _super23.call(this, parameters, {\n isRenderable: true\n });\n var _this14$data$file = _this14.data.file,\n filename = _this14$data$file.filename,\n content = _this14$data$file.content;\n _this14.filename = (0, _display_utils.getFilenameFromUrl)(filename);\n _this14.content = content;\n (_this14$linkService$e = _this14.linkService.eventBus) === null || _this14$linkService$e === void 0 ? void 0 : _this14$linkService$e.dispatch(\"fileattachmentannotation\", {\n source: _assertThisInitialized(_this14),\n id: (0, _util.stringToPDFString)(filename),\n filename: filename,\n content: content\n });\n return _this14;\n }\n\n _createClass(FileAttachmentAnnotationElement, [{\n key: \"render\",\n value: function render() {\n var _this$data$titleObj, _this$data$contentsOb;\n\n this.container.className = \"fileAttachmentAnnotation\";\n var trigger = document.createElement(\"div\");\n trigger.style.height = this.container.style.height;\n trigger.style.width = this.container.style.width;\n trigger.addEventListener(\"dblclick\", this._download.bind(this));\n\n if (!this.data.hasPopup && ((_this$data$titleObj = this.data.titleObj) !== null && _this$data$titleObj !== void 0 && _this$data$titleObj.str || (_this$data$contentsOb = this.data.contentsObj) !== null && _this$data$contentsOb !== void 0 && _this$data$contentsOb.str || this.data.richText)) {\n this._createPopup(trigger, this.data);\n }\n\n this.container.appendChild(trigger);\n return this.container;\n }\n }, {\n key: \"_download\",\n value: function _download() {\n var _this$downloadManager;\n\n (_this$downloadManager = this.downloadManager) === null || _this$downloadManager === void 0 ? void 0 : _this$downloadManager.openOrDownloadData(this.container, this.content, this.filename);\n }\n }]);\n\n return FileAttachmentAnnotationElement;\n}(AnnotationElement);\n\nvar AnnotationLayer = /*#__PURE__*/function () {\n function AnnotationLayer() {\n _classCallCheck(this, AnnotationLayer);\n }\n\n _createClass(AnnotationLayer, null, [{\n key: \"render\",\n value: function render(parameters) {\n var sortedAnnotations = [],\n popupAnnotations = [];\n\n var _iterator22 = _createForOfIteratorHelper(parameters.annotations),\n _step22;\n\n try {\n for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {\n var _data = _step22.value;\n\n if (!_data) {\n continue;\n }\n\n if (_data.annotationType === _util.AnnotationType.POPUP) {\n popupAnnotations.push(_data);\n continue;\n }\n\n sortedAnnotations.push(_data);\n }\n } catch (err) {\n _iterator22.e(err);\n } finally {\n _iterator22.f();\n }\n\n if (popupAnnotations.length) {\n sortedAnnotations.push.apply(sortedAnnotations, popupAnnotations);\n }\n\n var div = parameters.div;\n\n for (var _i7 = 0, _sortedAnnotations = sortedAnnotations; _i7 < _sortedAnnotations.length; _i7++) {\n var data = _sortedAnnotations[_i7];\n var element = AnnotationElementFactory.create({\n data: data,\n layer: div,\n page: parameters.page,\n viewport: parameters.viewport,\n linkService: parameters.linkService,\n downloadManager: parameters.downloadManager,\n imageResourcesPath: parameters.imageResourcesPath || \"\",\n renderForms: parameters.renderForms !== false,\n svgFactory: new _display_utils.DOMSVGFactory(),\n annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(),\n enableScripting: parameters.enableScripting,\n hasJSActions: parameters.hasJSActions,\n fieldObjects: parameters.fieldObjects,\n mouseState: parameters.mouseState || {\n isDown: false\n }\n });\n\n if (element.isRenderable) {\n var rendered = element.render();\n\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n\n if (Array.isArray(rendered)) {\n var _iterator23 = _createForOfIteratorHelper(rendered),\n _step23;\n\n try {\n for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {\n var renderedElement = _step23.value;\n div.appendChild(renderedElement);\n }\n } catch (err) {\n _iterator23.e(err);\n } finally {\n _iterator23.f();\n }\n } else {\n if (element instanceof PopupAnnotationElement) {\n div.prepend(rendered);\n } else {\n div.appendChild(rendered);\n }\n }\n }\n }\n\n _classStaticPrivateMethodGet(this, AnnotationLayer, _setAnnotationCanvasMap).call(this, div, parameters.annotationCanvasMap);\n }\n }, {\n key: \"update\",\n value: function update(parameters) {\n var page = parameters.page,\n viewport = parameters.viewport,\n annotations = parameters.annotations,\n annotationCanvasMap = parameters.annotationCanvasMap,\n div = parameters.div;\n var transform = viewport.transform;\n var matrix = \"matrix(\".concat(transform.join(\",\"), \")\");\n var scale, ownMatrix;\n\n var _iterator24 = _createForOfIteratorHelper(annotations),\n _step24;\n\n try {\n for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {\n var data = _step24.value;\n var elements = div.querySelectorAll(\"[data-annotation-id=\\\"\".concat(data.id, \"\\\"]\"));\n\n if (elements) {\n var _iterator25 = _createForOfIteratorHelper(elements),\n _step25;\n\n try {\n for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {\n var element = _step25.value;\n\n if (data.hasOwnCanvas) {\n var rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n\n if (!ownMatrix) {\n scale = Math.abs(transform[0] || transform[1]);\n var ownTransform = transform.slice();\n\n for (var i = 0; i < 4; i++) {\n ownTransform[i] = Math.sign(ownTransform[i]);\n }\n\n ownMatrix = \"matrix(\".concat(ownTransform.join(\",\"), \")\");\n }\n\n var left = rect[0] * scale;\n var top = rect[1] * scale;\n element.style.left = \"\".concat(left, \"px\");\n element.style.top = \"\".concat(top, \"px\");\n element.style.transformOrigin = \"\".concat(-left, \"px \").concat(-top, \"px\");\n element.style.transform = ownMatrix;\n } else {\n element.style.transform = matrix;\n }\n }\n } catch (err) {\n _iterator25.e(err);\n } finally {\n _iterator25.f();\n }\n }\n }\n } catch (err) {\n _iterator24.e(err);\n } finally {\n _iterator24.f();\n }\n\n _classStaticPrivateMethodGet(this, AnnotationLayer, _setAnnotationCanvasMap).call(this, div, annotationCanvasMap);\n\n div.hidden = false;\n }\n }]);\n\n return AnnotationLayer;\n}();\n\nexports.AnnotationLayer = AnnotationLayer;\n\nfunction _setAnnotationCanvasMap(div, annotationCanvasMap) {\n if (!annotationCanvasMap) {\n return;\n }\n\n var _iterator26 = _createForOfIteratorHelper(annotationCanvasMap),\n _step26;\n\n try {\n for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) {\n var _step26$value = _slicedToArray(_step26.value, 2),\n id = _step26$value[0],\n canvas = _step26$value[1];\n\n var element = div.querySelector(\"[data-annotation-id=\\\"\".concat(id, \"\\\"]\"));\n\n if (!element) {\n continue;\n }\n\n var firstChild = element.firstChild;\n\n if (firstChild.nodeName === \"CANVAS\") {\n element.replaceChild(canvas, firstChild);\n } else {\n element.insertBefore(canvas, firstChild);\n }\n }\n } catch (err) {\n _iterator26.e(err);\n } finally {\n _iterator26.f();\n }\n\n annotationCanvasMap.clear();\n}\n\n/***/ }),\n/* 149 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.ColorConverters = void 0;\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\n\nvar ColorConverters = /*#__PURE__*/function () {\n function ColorConverters() {\n _classCallCheck(this, ColorConverters);\n }\n\n _createClass(ColorConverters, null, [{\n key: \"CMYK_G\",\n value: function CMYK_G(_ref) {\n var _ref2 = _slicedToArray(_ref, 4),\n c = _ref2[0],\n y = _ref2[1],\n m = _ref2[2],\n k = _ref2[3];\n\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n }, {\n key: \"G_CMYK\",\n value: function G_CMYK(_ref3) {\n var _ref4 = _slicedToArray(_ref3, 1),\n g = _ref4[0];\n\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n }, {\n key: \"G_RGB\",\n value: function G_RGB(_ref5) {\n var _ref6 = _slicedToArray(_ref5, 1),\n g = _ref6[0];\n\n return [\"RGB\", g, g, g];\n }\n }, {\n key: \"G_HTML\",\n value: function G_HTML(_ref7) {\n var _ref8 = _slicedToArray(_ref7, 1),\n g = _ref8[0];\n\n var G = makeColorComp(g);\n return \"#\".concat(G).concat(G).concat(G);\n }\n }, {\n key: \"RGB_G\",\n value: function RGB_G(_ref9) {\n var _ref10 = _slicedToArray(_ref9, 3),\n r = _ref10[0],\n g = _ref10[1],\n b = _ref10[2];\n\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n }, {\n key: \"RGB_HTML\",\n value: function RGB_HTML(_ref11) {\n var _ref12 = _slicedToArray(_ref11, 3),\n r = _ref12[0],\n g = _ref12[1],\n b = _ref12[2];\n\n var R = makeColorComp(r);\n var G = makeColorComp(g);\n var B = makeColorComp(b);\n return \"#\".concat(R).concat(G).concat(B);\n }\n }, {\n key: \"T_HTML\",\n value: function T_HTML() {\n return \"#00000000\";\n }\n }, {\n key: \"CMYK_RGB\",\n value: function CMYK_RGB(_ref13) {\n var _ref14 = _slicedToArray(_ref13, 4),\n c = _ref14[0],\n y = _ref14[1],\n m = _ref14[2],\n k = _ref14[3];\n\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n }, {\n key: \"CMYK_HTML\",\n value: function CMYK_HTML(components) {\n return this.RGB_HTML(this.CMYK_RGB(components));\n }\n }, {\n key: \"RGB_CMYK\",\n value: function RGB_CMYK(_ref15) {\n var _ref16 = _slicedToArray(_ref15, 3),\n r = _ref16[0],\n g = _ref16[1],\n b = _ref16[2];\n\n var c = 1 - r;\n var m = 1 - g;\n var y = 1 - b;\n var k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n }]);\n\n return ColorConverters;\n}();\n\nexports.ColorConverters = ColorConverters;\n\n/***/ }),\n/* 150 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.XfaLayer = void 0;\n\nvar _util = __w_pdfjs_require__(4);\n\nvar _xfa_text = __w_pdfjs_require__(147);\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar XfaLayer = /*#__PURE__*/function () {\n function XfaLayer() {\n _classCallCheck(this, XfaLayer);\n }\n\n _createClass(XfaLayer, null, [{\n key: \"setupStorage\",\n value: function setupStorage(html, id, element, storage, intent) {\n var storedData = storage.getValue(id, {\n value: null\n });\n\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n\n if (intent === \"print\") {\n break;\n }\n\n html.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n\n if (intent === \"print\") {\n break;\n }\n\n html.addEventListener(\"change\", function (event) {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n\n if (intent === \"print\") {\n break;\n }\n\n html.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n\n break;\n\n case \"select\":\n if (storedData.value !== null) {\n var _iterator = _createForOfIteratorHelper(element.children),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var option = _step.value;\n\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n html.addEventListener(\"input\", function (event) {\n var options = event.target.options;\n var value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value: value\n });\n });\n break;\n }\n }\n }, {\n key: \"setAttributes\",\n value: function setAttributes(_ref) {\n var html = _ref.html,\n element = _ref.element,\n _ref$storage = _ref.storage,\n storage = _ref$storage === void 0 ? null : _ref$storage,\n intent = _ref.intent,\n linkService = _ref.linkService;\n var attributes = element.attributes;\n var isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n\n if (attributes.type === \"radio\") {\n attributes.name = \"\".concat(attributes.name, \"-\").concat(intent);\n }\n\n for (var _i = 0, _Object$entries = Object.entries(attributes); _i < _Object$entries.length; _i++) {\n var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),\n key = _Object$entries$_i[0],\n value = _Object$entries$_i[1];\n\n if (value === null || value === undefined || key === \"dataId\") {\n continue;\n }\n\n if (key !== \"style\") {\n if (key === \"textContent\") {\n html.textContent = value;\n } else if (key === \"class\") {\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n } else {\n if (isHTMLAnchorElement && (key === \"href\" || key === \"newWindow\")) {\n continue;\n }\n\n html.setAttribute(key, value);\n }\n } else {\n Object.assign(html.style, value);\n }\n }\n\n if (isHTMLAnchorElement) {\n var _linkService$addLinkA;\n\n if (!linkService.addLinkAttributes) {\n (0, _util.warn)(\"XfaLayer.setAttribute - missing `addLinkAttributes`-method on the `linkService`-instance.\");\n }\n\n (_linkService$addLinkA = linkService.addLinkAttributes) === null || _linkService$addLinkA === void 0 ? void 0 : _linkService$addLinkA.call(linkService, html, attributes.href, attributes.newWindow);\n }\n\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n }, {\n key: \"render\",\n value: function render(parameters) {\n var storage = parameters.annotationStorage;\n var linkService = parameters.linkService;\n var root = parameters.xfaHtml;\n var intent = parameters.intent || \"display\";\n var rootHtml = document.createElement(root.name);\n\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent: intent,\n linkService: linkService\n });\n }\n\n var stack = [[root, -1, rootHtml]];\n var rootDiv = parameters.div;\n rootDiv.appendChild(rootHtml);\n\n if (parameters.viewport) {\n var transform = \"matrix(\".concat(parameters.viewport.transform.join(\",\"), \")\");\n rootDiv.style.transform = transform;\n }\n\n if (intent !== \"richText\") {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n\n var textDivs = [];\n\n while (stack.length > 0) {\n var _child$attributes;\n\n var _stack = _slicedToArray(stack[stack.length - 1], 3),\n parent = _stack[0],\n i = _stack[1],\n html = _stack[2];\n\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n\n var child = parent.children[++stack[stack.length - 1][1]];\n\n if (child === null) {\n continue;\n }\n\n var name = child.name;\n\n if (name === \"#text\") {\n var node = document.createTextNode(child.value);\n textDivs.push(node);\n html.appendChild(node);\n continue;\n }\n\n var childHtml = void 0;\n\n if (child !== null && child !== void 0 && (_child$attributes = child.attributes) !== null && _child$attributes !== void 0 && _child$attributes.xmlns) {\n childHtml = document.createElementNS(child.attributes.xmlns, name);\n } else {\n childHtml = document.createElement(name);\n }\n\n html.appendChild(childHtml);\n\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage: storage,\n intent: intent,\n linkService: linkService\n });\n }\n\n if (child.children && child.children.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n var _node = document.createTextNode(child.value);\n\n if (_xfa_text.XfaText.shouldBuildText(name)) {\n textDivs.push(_node);\n }\n\n childHtml.appendChild(_node);\n }\n }\n\n var _iterator2 = _createForOfIteratorHelper(rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var el = _step2.value;\n el.setAttribute(\"readOnly\", true);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return {\n textDivs: textDivs\n };\n }\n }, {\n key: \"update\",\n value: function update(parameters) {\n var transform = \"matrix(\".concat(parameters.viewport.transform.join(\",\"), \")\");\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n }]);\n\n return XfaLayer;\n}();\n\nexports.XfaLayer = XfaLayer;\n\n/***/ }),\n/* 151 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.renderTextLayer = renderTextLayer;\n\nvar _util = __w_pdfjs_require__(4);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar MAX_TEXT_DIVS_TO_RENDER = 100000;\nvar DEFAULT_FONT_SIZE = 30;\nvar DEFAULT_FONT_ASCENT = 0.8;\nvar ascentCache = new Map();\nvar AllWhitespaceRegexp = /^\\s+$/g;\n\nfunction getAscent(fontFamily, ctx) {\n var cachedAscent = ascentCache.get(fontFamily);\n\n if (cachedAscent) {\n return cachedAscent;\n }\n\n ctx.save();\n ctx.font = \"\".concat(DEFAULT_FONT_SIZE, \"px \").concat(fontFamily);\n var metrics = ctx.measureText(\"\");\n var ascent = metrics.fontBoundingBoxAscent;\n var descent = Math.abs(metrics.fontBoundingBoxDescent);\n\n if (ascent) {\n ctx.restore();\n var ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n var pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n descent = 0;\n\n for (var i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n\n for (var _i = 0, ii = pixels.length; _i < ii; _i += 4) {\n if (pixels[_i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(_i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n ctx.restore();\n\n if (ascent) {\n var _ratio = ascent / (ascent + descent);\n\n ascentCache.set(fontFamily, _ratio);\n return _ratio;\n }\n\n ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n return DEFAULT_FONT_ASCENT;\n}\n\nfunction appendText(task, geom, styles, ctx) {\n var textDiv = document.createElement(\"span\");\n var textDivProperties = task._enhanceTextSelection ? {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n originalTransform: null,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n scale: 1\n } : {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL\n };\n\n task._textDivs.push(textDiv);\n\n var tx = _util.Util.transform(task._viewport.transform, geom.transform);\n\n var angle = Math.atan2(tx[1], tx[0]);\n var style = styles[geom.fontName];\n\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n\n var fontHeight = Math.hypot(tx[2], tx[3]);\n var fontAscent = fontHeight * getAscent(style.fontFamily, ctx);\n var left, top;\n\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n\n textDiv.style.left = \"\".concat(left, \"px\");\n textDiv.style.top = \"\".concat(top, \"px\");\n textDiv.style.fontSize = \"\".concat(fontHeight, \"px\");\n textDiv.style.fontFamily = style.fontFamily;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n\n var shouldScaleText = false;\n\n if (geom.str.length > 1 || task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str)) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n var absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n\n if (shouldScaleText) {\n if (style.vertical) {\n textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n } else {\n textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n }\n }\n\n task._textDivProperties.set(textDiv, textDivProperties);\n\n if (task._textContentStream) {\n task._layoutText(textDiv);\n }\n\n if (task._enhanceTextSelection && textDivProperties.hasText) {\n var angleCos = 1,\n angleSin = 0;\n\n if (angle !== 0) {\n angleCos = Math.cos(angle);\n angleSin = Math.sin(angle);\n }\n\n var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;\n var divHeight = fontHeight;\n var m, b;\n\n if (angle !== 0) {\n m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n } else {\n b = [left, top, left + divWidth, top + divHeight];\n }\n\n task._bounds.push({\n left: b[0],\n top: b[1],\n right: b[2],\n bottom: b[3],\n div: textDiv,\n size: [divWidth, divHeight],\n m: m\n });\n }\n}\n\nfunction render(task) {\n if (task._canceled) {\n return;\n }\n\n var textDivs = task._textDivs;\n var capability = task._capability;\n var textDivsLength = textDivs.length;\n\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n task._renderingDone = true;\n capability.resolve();\n return;\n }\n\n if (!task._textContentStream) {\n for (var i = 0; i < textDivsLength; i++) {\n task._layoutText(textDivs[i]);\n }\n }\n\n task._renderingDone = true;\n capability.resolve();\n}\n\nfunction findPositiveMin(ts, offset, count) {\n var result = 0;\n\n for (var i = 0; i < count; i++) {\n var t = ts[offset++];\n\n if (t > 0) {\n result = result ? Math.min(t, result) : t;\n }\n }\n\n return result;\n}\n\nfunction expand(task) {\n var bounds = task._bounds;\n var viewport = task._viewport;\n var expanded = expandBounds(viewport.width, viewport.height, bounds);\n\n for (var i = 0; i < expanded.length; i++) {\n var div = bounds[i].div;\n\n var divProperties = task._textDivProperties.get(div);\n\n if (divProperties.angle === 0) {\n divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n divProperties.paddingTop = bounds[i].top - expanded[i].top;\n divProperties.paddingRight = expanded[i].right - bounds[i].right;\n divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n\n task._textDivProperties.set(div, divProperties);\n\n continue;\n }\n\n var e = expanded[i],\n b = bounds[i];\n var m = b.m,\n c = m[0],\n s = m[1];\n var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n var ts = new Float64Array(64);\n\n for (var j = 0, jj = points.length; j < jj; j++) {\n var t = _util.Util.applyTransform(points[j], m);\n\n ts[j + 0] = c && (e.left - t[0]) / c;\n ts[j + 4] = s && (e.top - t[1]) / s;\n ts[j + 8] = c && (e.right - t[0]) / c;\n ts[j + 12] = s && (e.bottom - t[1]) / s;\n ts[j + 16] = s && (e.left - t[0]) / -s;\n ts[j + 20] = c && (e.top - t[1]) / c;\n ts[j + 24] = s && (e.right - t[0]) / -s;\n ts[j + 28] = c && (e.bottom - t[1]) / c;\n ts[j + 32] = c && (e.left - t[0]) / -c;\n ts[j + 36] = s && (e.top - t[1]) / -s;\n ts[j + 40] = c && (e.right - t[0]) / -c;\n ts[j + 44] = s && (e.bottom - t[1]) / -s;\n ts[j + 48] = s && (e.left - t[0]) / s;\n ts[j + 52] = c && (e.top - t[1]) / -c;\n ts[j + 56] = s && (e.right - t[0]) / s;\n ts[j + 60] = c && (e.bottom - t[1]) / -c;\n }\n\n var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n\n task._textDivProperties.set(div, divProperties);\n }\n}\n\nfunction expandBounds(width, height, boxes) {\n var bounds = boxes.map(function (box, i) {\n return {\n x1: box.left,\n y1: box.top,\n x2: box.right,\n y2: box.bottom,\n index: i,\n x1New: undefined,\n x2New: undefined\n };\n });\n expandBoundsLTR(width, bounds);\n var expanded = new Array(boxes.length);\n\n var _iterator = _createForOfIteratorHelper(bounds),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var b = _step.value;\n var i = b.index;\n expanded[i] = {\n left: b.x1New,\n top: 0,\n right: b.x2New,\n bottom: 0\n };\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n boxes.map(function (box, i) {\n var e = expanded[i],\n b = bounds[i];\n b.x1 = box.top;\n b.y1 = width - e.right;\n b.x2 = box.bottom;\n b.y2 = width - e.left;\n b.index = i;\n b.x1New = undefined;\n b.x2New = undefined;\n });\n expandBoundsLTR(height, bounds);\n\n var _iterator2 = _createForOfIteratorHelper(bounds),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _b = _step2.value;\n var _i2 = _b.index;\n expanded[_i2].top = _b.x1New;\n expanded[_i2].bottom = _b.x2New;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return expanded;\n}\n\nfunction expandBoundsLTR(width, bounds) {\n bounds.sort(function (a, b) {\n return a.x1 - b.x1 || a.index - b.index;\n });\n var fakeBoundary = {\n x1: -Infinity,\n y1: -Infinity,\n x2: 0,\n y2: Infinity,\n index: -1,\n x1New: 0,\n x2New: 0\n };\n var horizon = [{\n start: -Infinity,\n end: Infinity,\n boundary: fakeBoundary\n }];\n\n var _iterator3 = _createForOfIteratorHelper(bounds),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var boundary = _step3.value;\n var i = 0;\n\n while (i < horizon.length && horizon[i].end <= boundary.y1) {\n i++;\n }\n\n var j = horizon.length - 1;\n\n while (j >= 0 && horizon[j].start >= boundary.y2) {\n j--;\n }\n\n var _horizonPart = void 0,\n _affectedBoundary = void 0;\n\n var q = void 0,\n k = void 0,\n maxXNew = -Infinity;\n\n for (q = i; q <= j; q++) {\n _horizonPart = horizon[q];\n _affectedBoundary = _horizonPart.boundary;\n var xNew = void 0;\n\n if (_affectedBoundary.x2 > boundary.x1) {\n xNew = _affectedBoundary.index > boundary.index ? _affectedBoundary.x1New : boundary.x1;\n } else if (_affectedBoundary.x2New === undefined) {\n xNew = (_affectedBoundary.x2 + boundary.x1) / 2;\n } else {\n xNew = _affectedBoundary.x2New;\n }\n\n if (xNew > maxXNew) {\n maxXNew = xNew;\n }\n }\n\n boundary.x1New = maxXNew;\n\n for (q = i; q <= j; q++) {\n _horizonPart = horizon[q];\n _affectedBoundary = _horizonPart.boundary;\n\n if (_affectedBoundary.x2New === undefined) {\n if (_affectedBoundary.x2 > boundary.x1) {\n if (_affectedBoundary.index > boundary.index) {\n _affectedBoundary.x2New = _affectedBoundary.x2;\n }\n } else {\n _affectedBoundary.x2New = maxXNew;\n }\n } else if (_affectedBoundary.x2New > maxXNew) {\n _affectedBoundary.x2New = Math.max(maxXNew, _affectedBoundary.x2);\n }\n }\n\n var changedHorizon = [];\n var lastBoundary = null;\n\n for (q = i; q <= j; q++) {\n _horizonPart = horizon[q];\n _affectedBoundary = _horizonPart.boundary;\n var useBoundary = _affectedBoundary.x2 > boundary.x2 ? _affectedBoundary : boundary;\n\n if (lastBoundary === useBoundary) {\n changedHorizon[changedHorizon.length - 1].end = _horizonPart.end;\n } else {\n changedHorizon.push({\n start: _horizonPart.start,\n end: _horizonPart.end,\n boundary: useBoundary\n });\n lastBoundary = useBoundary;\n }\n }\n\n if (horizon[i].start < boundary.y1) {\n changedHorizon[0].start = boundary.y1;\n changedHorizon.unshift({\n start: horizon[i].start,\n end: boundary.y1,\n boundary: horizon[i].boundary\n });\n }\n\n if (boundary.y2 < horizon[j].end) {\n changedHorizon[changedHorizon.length - 1].end = boundary.y2;\n changedHorizon.push({\n start: boundary.y2,\n end: horizon[j].end,\n boundary: horizon[j].boundary\n });\n }\n\n for (q = i; q <= j; q++) {\n _horizonPart = horizon[q];\n _affectedBoundary = _horizonPart.boundary;\n\n if (_affectedBoundary.x2New !== undefined) {\n continue;\n }\n\n var used = false;\n\n for (k = i - 1; !used && k >= 0 && horizon[k].start >= _affectedBoundary.y1; k--) {\n used = horizon[k].boundary === _affectedBoundary;\n }\n\n for (k = j + 1; !used && k < horizon.length && horizon[k].end <= _affectedBoundary.y2; k++) {\n used = horizon[k].boundary === _affectedBoundary;\n }\n\n for (k = 0; !used && k < changedHorizon.length; k++) {\n used = changedHorizon[k].boundary === _affectedBoundary;\n }\n\n if (!used) {\n _affectedBoundary.x2New = maxXNew;\n }\n }\n\n Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon));\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n for (var _i3 = 0, _horizon = horizon; _i3 < _horizon.length; _i3++) {\n var horizonPart = _horizon[_i3];\n var affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New === undefined) {\n affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n }\n }\n}\n\nvar TextLayerRenderTask = /*#__PURE__*/function () {\n function TextLayerRenderTask(_ref) {\n var _globalThis$FontInspe,\n _this = this;\n\n var textContent = _ref.textContent,\n textContentStream = _ref.textContentStream,\n container = _ref.container,\n viewport = _ref.viewport,\n textDivs = _ref.textDivs,\n textContentItemsStr = _ref.textContentItemsStr,\n enhanceTextSelection = _ref.enhanceTextSelection;\n\n _classCallCheck(this, TextLayerRenderTask);\n\n this._textContent = textContent;\n this._textContentStream = textContentStream;\n this._container = container;\n this._document = container.ownerDocument;\n this._viewport = viewport;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._enhanceTextSelection = !!enhanceTextSelection;\n this._fontInspectorEnabled = !!((_globalThis$FontInspe = globalThis.FontInspector) !== null && _globalThis$FontInspe !== void 0 && _globalThis$FontInspe.enabled);\n this._reader = null;\n this._layoutTextLastFontSize = null;\n this._layoutTextLastFontFamily = null;\n this._layoutTextCtx = null;\n this._textDivProperties = new WeakMap();\n this._renderingDone = false;\n this._canceled = false;\n this._capability = (0, _util.createPromiseCapability)();\n this._renderTimer = null;\n this._bounds = [];\n\n this._capability.promise[\"finally\"](function () {\n if (!_this._enhanceTextSelection) {\n _this._textDivProperties = null;\n }\n\n if (_this._layoutTextCtx) {\n _this._layoutTextCtx.canvas.width = 0;\n _this._layoutTextCtx.canvas.height = 0;\n _this._layoutTextCtx = null;\n }\n })[\"catch\"](function () {});\n }\n\n _createClass(TextLayerRenderTask, [{\n key: \"promise\",\n get: function get() {\n return this._capability.promise;\n }\n }, {\n key: \"cancel\",\n value: function cancel() {\n this._canceled = true;\n\n if (this._reader) {\n this._reader.cancel(new _util.AbortException(\"TextLayer task cancelled.\"))[\"catch\"](function () {});\n\n this._reader = null;\n }\n\n if (this._renderTimer !== null) {\n clearTimeout(this._renderTimer);\n this._renderTimer = null;\n }\n\n this._capability.reject(new Error(\"TextLayer task cancelled.\"));\n }\n }, {\n key: \"_processItems\",\n value: function _processItems(items, styleCache) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i].str === undefined) {\n if (items[i].type === \"beginMarkedContentProps\" || items[i].type === \"beginMarkedContent\") {\n var parent = this._container;\n this._container = document.createElement(\"span\");\n\n this._container.classList.add(\"markedContent\");\n\n if (items[i].id !== null) {\n this._container.setAttribute(\"id\", \"\".concat(items[i].id));\n }\n\n parent.appendChild(this._container);\n } else if (items[i].type === \"endMarkedContent\") {\n this._container = this._container.parentNode;\n }\n\n continue;\n }\n\n this._textContentItemsStr.push(items[i].str);\n\n appendText(this, items[i], styleCache, this._layoutTextCtx);\n }\n }\n }, {\n key: \"_layoutText\",\n value: function _layoutText(textDiv) {\n var textDivProperties = this._textDivProperties.get(textDiv);\n\n var transform = \"\";\n\n if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) {\n var _textDiv$style = textDiv.style,\n fontSize = _textDiv$style.fontSize,\n fontFamily = _textDiv$style.fontFamily;\n\n if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) {\n this._layoutTextCtx.font = \"\".concat(fontSize, \" \").concat(fontFamily);\n this._layoutTextLastFontSize = fontSize;\n this._layoutTextLastFontFamily = fontFamily;\n }\n\n var _this$_layoutTextCtx$ = this._layoutTextCtx.measureText(textDiv.textContent),\n width = _this$_layoutTextCtx$.width;\n\n if (width > 0) {\n var scale = textDivProperties.canvasWidth / width;\n\n if (this._enhanceTextSelection) {\n textDivProperties.scale = scale;\n }\n\n transform = \"scaleX(\".concat(scale, \")\");\n }\n }\n\n if (textDivProperties.angle !== 0) {\n transform = \"rotate(\".concat(textDivProperties.angle, \"deg) \").concat(transform);\n }\n\n if (transform.length > 0) {\n if (this._enhanceTextSelection) {\n textDivProperties.originalTransform = transform;\n }\n\n textDiv.style.transform = transform;\n }\n\n if (textDivProperties.hasText) {\n this._container.appendChild(textDiv);\n }\n\n if (textDivProperties.hasEOL) {\n var br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n\n this._container.appendChild(br);\n }\n }\n }, {\n key: \"_render\",\n value: function _render() {\n var _this2 = this;\n\n var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var capability = (0, _util.createPromiseCapability)();\n var styleCache = Object.create(null);\n\n var canvas = this._document.createElement(\"canvas\");\n\n canvas.height = canvas.width = DEFAULT_FONT_SIZE;\n canvas.mozOpaque = true;\n this._layoutTextCtx = canvas.getContext(\"2d\", {\n alpha: false\n });\n\n if (this._textContent) {\n var textItems = this._textContent.items;\n var textStyles = this._textContent.styles;\n\n this._processItems(textItems, textStyles);\n\n capability.resolve();\n } else if (this._textContentStream) {\n var pump = function pump() {\n _this2._reader.read().then(function (_ref2) {\n var value = _ref2.value,\n done = _ref2.done;\n\n if (done) {\n capability.resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n\n _this2._processItems(value.items, styleCache);\n\n pump();\n }, capability.reject);\n };\n\n this._reader = this._textContentStream.getReader();\n pump();\n } else {\n throw new Error('Neither \"textContent\" nor \"textContentStream\" parameters specified.');\n }\n\n capability.promise.then(function () {\n styleCache = null;\n\n if (!timeout) {\n render(_this2);\n } else {\n _this2._renderTimer = setTimeout(function () {\n render(_this2);\n _this2._renderTimer = null;\n }, timeout);\n }\n }, this._capability.reject);\n }\n }, {\n key: \"expandTextDivs\",\n value: function expandTextDivs() {\n var expandDivs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (!this._enhanceTextSelection || !this._renderingDone) {\n return;\n }\n\n if (this._bounds !== null) {\n expand(this);\n this._bounds = null;\n }\n\n var transformBuf = [],\n paddingBuf = [];\n\n for (var i = 0, ii = this._textDivs.length; i < ii; i++) {\n var div = this._textDivs[i];\n\n var divProps = this._textDivProperties.get(div);\n\n if (!divProps.hasText) {\n continue;\n }\n\n if (expandDivs) {\n transformBuf.length = 0;\n paddingBuf.length = 0;\n\n if (divProps.originalTransform) {\n transformBuf.push(divProps.originalTransform);\n }\n\n if (divProps.paddingTop > 0) {\n paddingBuf.push(\"\".concat(divProps.paddingTop, \"px\"));\n transformBuf.push(\"translateY(\".concat(-divProps.paddingTop, \"px)\"));\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingRight > 0) {\n paddingBuf.push(\"\".concat(divProps.paddingRight / divProps.scale, \"px\"));\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingBottom > 0) {\n paddingBuf.push(\"\".concat(divProps.paddingBottom, \"px\"));\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingLeft > 0) {\n paddingBuf.push(\"\".concat(divProps.paddingLeft / divProps.scale, \"px\"));\n transformBuf.push(\"translateX(\".concat(-divProps.paddingLeft / divProps.scale, \"px)\"));\n } else {\n paddingBuf.push(0);\n }\n\n div.style.padding = paddingBuf.join(\" \");\n\n if (transformBuf.length) {\n div.style.transform = transformBuf.join(\" \");\n }\n } else {\n div.style.padding = null;\n div.style.transform = divProps.originalTransform;\n }\n }\n }\n }]);\n\n return TextLayerRenderTask;\n}();\n\nfunction renderTextLayer(renderParameters) {\n var task = new TextLayerRenderTask({\n textContent: renderParameters.textContent,\n textContentStream: renderParameters.textContentStream,\n container: renderParameters.container,\n viewport: renderParameters.viewport,\n textDivs: renderParameters.textDivs,\n textContentItemsStr: renderParameters.textContentItemsStr,\n enhanceTextSelection: renderParameters.enhanceTextSelection\n });\n\n task._render(renderParameters.timeout);\n\n return task;\n}\n\n/***/ }),\n/* 152 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.SVGGraphics = void 0;\n\nvar _util = __w_pdfjs_require__(4);\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _is_node = __w_pdfjs_require__(6);\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar SVGGraphics = function SVGGraphics() {\n _classCallCheck(this, SVGGraphics);\n\n (0, _util.unreachable)(\"Not implemented: SVGGraphics\");\n};\n\nexports.SVGGraphics = SVGGraphics;\n{\n var opListToTree = function opListToTree(opList) {\n var opTree = [];\n var tmp = [];\n\n var _iterator = _createForOfIteratorHelper(opList),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var opListElement = _step.value;\n\n if (opListElement.fn === \"save\") {\n opTree.push({\n fnId: 92,\n fn: \"group\",\n items: []\n });\n tmp.push(opTree);\n opTree = opTree[opTree.length - 1].items;\n continue;\n }\n\n if (opListElement.fn === \"restore\") {\n opTree = tmp.pop();\n } else {\n opTree.push(opListElement);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return opTree;\n };\n\n var pf = function pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n var s = value.toFixed(10);\n var i = s.length - 1;\n\n if (s[i] !== \"0\") {\n return s;\n }\n\n do {\n i--;\n } while (s[i] === \"0\");\n\n return s.substring(0, s[i] === \".\" ? i : i + 1);\n };\n\n var pm = function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return \"\";\n }\n\n return \"scale(\".concat(pf(m[0]), \" \").concat(pf(m[3]), \")\");\n }\n\n if (m[0] === m[3] && m[1] === -m[2]) {\n var a = Math.acos(m[0]) * 180 / Math.PI;\n return \"rotate(\".concat(pf(a), \")\");\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return \"translate(\".concat(pf(m[4]), \" \").concat(pf(m[5]), \")\");\n }\n }\n\n return \"matrix(\".concat(pf(m[0]), \" \").concat(pf(m[1]), \" \").concat(pf(m[2]), \" \").concat(pf(m[3]), \" \").concat(pf(m[4]), \" \") + \"\".concat(pf(m[5]), \")\");\n };\n\n var SVG_DEFAULTS = {\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fillColor: \"#000000\"\n };\n var XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n var XLINK_NS = \"http://www.w3.org/1999/xlink\";\n var LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n var LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n\n var convertImgDataToPng = function () {\n var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n var CHUNK_WRAPPER_SIZE = 12;\n var crcTable = new Int32Array(256);\n\n for (var i = 0; i < 256; i++) {\n var c = i;\n\n for (var h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedb88320 ^ c >> 1 & 0x7fffffff;\n } else {\n c = c >> 1 & 0x7fffffff;\n }\n }\n\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n var crc = -1;\n\n for (var _i = start; _i < end; _i++) {\n var a = (crc ^ data[_i]) & 0xff;\n var b = crcTable[a];\n crc = crc >>> 8 ^ b;\n }\n\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n var p = offset;\n var len = body.length;\n data[p] = len >> 24 & 0xff;\n data[p + 1] = len >> 16 & 0xff;\n data[p + 2] = len >> 8 & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n data.set(body, p);\n p += body.length;\n var crc = crc32(data, offset + 4, p);\n data[p] = crc >> 24 & 0xff;\n data[p + 1] = crc >> 16 & 0xff;\n data[p + 2] = crc >> 8 & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n var a = 1;\n var b = 0;\n\n for (var _i2 = start; _i2 < end; ++_i2) {\n a = (a + (data[_i2] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n\n return b << 16 | a;\n }\n\n function deflateSync(literals) {\n if (!_is_node.isNodeJS) {\n return deflateSyncUncompressed(literals);\n }\n\n try {\n var input;\n\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n input = Buffer.from(literals);\n }\n\n var output = require(\"zlib\").deflateSync(input, {\n level: 9\n });\n\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n (0, _util.warn)(\"Not compressing PNG because zlib.deflateSync is unavailable: \" + e);\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n function deflateSyncUncompressed(literals) {\n var len = literals.length;\n var maxBlockLength = 0xffff;\n var deflateBlocks = Math.ceil(len / maxBlockLength);\n var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n var pi = 0;\n idat[pi++] = 0x78;\n idat[pi++] = 0x9c;\n var pos = 0;\n\n while (len > maxBlockLength) {\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = len >> 8 & 0xff;\n idat[pi++] = ~len & 0xffff & 0xff;\n idat[pi++] = (~len & 0xffff) >> 8 & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n var adler = adler32(literals, 0, literals.length);\n idat[pi++] = adler >> 24 & 0xff;\n idat[pi++] = adler >> 16 & 0xff;\n idat[pi++] = adler >> 8 & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema, isMask) {\n var width = imgData.width;\n var height = imgData.height;\n var bitDepth, colorType, lineSize;\n var bytes = imgData.data;\n\n switch (kind) {\n case _util.ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = width + 7 >> 3;\n break;\n\n case _util.ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n\n case _util.ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n\n default:\n throw new Error(\"invalid format\");\n }\n\n var literals = new Uint8Array((1 + lineSize) * height);\n var offsetLiterals = 0,\n offsetBytes = 0;\n\n for (var y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0;\n literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {\n offsetLiterals = 0;\n\n for (var _y = 0; _y < height; _y++) {\n offsetLiterals++;\n\n for (var _i3 = 0; _i3 < lineSize; _i3++) {\n literals[offsetLiterals++] ^= 0xff;\n }\n }\n }\n\n var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]);\n var idat = deflateSync(literals);\n var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n var data = new Uint8Array(pngLength);\n var offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk(\"IHDR\", ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk(\"IDATA\", idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n return (0, _util.createObjectURL)(data, \"image/png\", forceDataSchema);\n }\n\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n var kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n }();\n\n var SVGExtraState = /*#__PURE__*/function () {\n function SVGExtraState() {\n _classCallCheck(this, SVGExtraState);\n\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n this.textMatrix = _util.IDENTITY_MATRIX;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = \"#000000\";\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n this.dashArray = [];\n this.dashPhase = 0;\n this.dependencies = [];\n this.activeClipUrl = null;\n this.clipGroup = null;\n this.maskId = \"\";\n }\n\n _createClass(SVGExtraState, [{\n key: \"clone\",\n value: function clone() {\n return Object.create(this);\n }\n }, {\n key: \"setCurrentPoint\",\n value: function setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n }]);\n\n return SVGExtraState;\n }();\n\n var clipCount = 0;\n var maskCount = 0;\n var shadingCount = 0;\n\n exports.SVGGraphics = SVGGraphics = /*#__PURE__*/function () {\n function SVGGraphics(commonObjs, objs) {\n var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n _classCallCheck(this, SVGGraphics);\n\n this.svgFactory = new _display_utils.DOMSVGFactory();\n this.current = new SVGExtraState();\n this.transformMatrix = _util.IDENTITY_MATRIX;\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n this._operatorIdMapping = [];\n\n for (var op in _util.OPS) {\n this._operatorIdMapping[_util.OPS[op]] = op;\n }\n }\n\n _createClass(SVGGraphics, [{\n key: \"save\",\n value: function save() {\n this.transformStack.push(this.transformMatrix);\n var old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n }\n }, {\n key: \"restore\",\n value: function restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n }, {\n key: \"group\",\n value: function group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n }\n }, {\n key: \"loadDependencies\",\n value: function loadDependencies(operatorList) {\n var _this = this;\n\n var fnArray = operatorList.fnArray;\n var argsArray = operatorList.argsArray;\n\n for (var i = 0, ii = fnArray.length; i < ii; i++) {\n if (fnArray[i] !== _util.OPS.dependency) {\n continue;\n }\n\n var _iterator2 = _createForOfIteratorHelper(argsArray[i]),\n _step2;\n\n try {\n var _loop = function _loop() {\n var obj = _step2.value;\n var objsPool = obj.startsWith(\"g_\") ? _this.commonObjs : _this.objs;\n var promise = new Promise(function (resolve) {\n objsPool.get(obj, resolve);\n });\n\n _this.current.dependencies.push(promise);\n };\n\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n\n return Promise.all(this.current.dependencies);\n }\n }, {\n key: \"transform\",\n value: function transform(a, b, c, d, e, f) {\n var transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);\n this.tgrp = null;\n }\n }, {\n key: \"getSVG\",\n value: function getSVG(operatorList, viewport) {\n var _this2 = this;\n\n this.viewport = viewport;\n\n var svgElement = this._initialize(viewport);\n\n return this.loadDependencies(operatorList).then(function () {\n _this2.transformMatrix = _util.IDENTITY_MATRIX;\n\n _this2.executeOpTree(_this2.convertOpList(operatorList));\n\n return svgElement;\n });\n }\n }, {\n key: \"convertOpList\",\n value: function convertOpList(operatorList) {\n var operatorIdMapping = this._operatorIdMapping;\n var argsArray = operatorList.argsArray;\n var fnArray = operatorList.fnArray;\n var opList = [];\n\n for (var i = 0, ii = fnArray.length; i < ii; i++) {\n var fnId = fnArray[i];\n opList.push({\n fnId: fnId,\n fn: operatorIdMapping[fnId],\n args: argsArray[i]\n });\n }\n\n return opListToTree(opList);\n }\n }, {\n key: \"executeOpTree\",\n value: function executeOpTree(opTree) {\n var _iterator3 = _createForOfIteratorHelper(opTree),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var opTreeElement = _step3.value;\n var fn = opTreeElement.fn;\n var fnId = opTreeElement.fnId;\n var args = opTreeElement.args;\n\n switch (fnId | 0) {\n case _util.OPS.beginText:\n this.beginText();\n break;\n\n case _util.OPS.dependency:\n break;\n\n case _util.OPS.setLeading:\n this.setLeading(args);\n break;\n\n case _util.OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n\n case _util.OPS.setFont:\n this.setFont(args);\n break;\n\n case _util.OPS.showText:\n this.showText(args[0]);\n break;\n\n case _util.OPS.showSpacedText:\n this.showText(args[0]);\n break;\n\n case _util.OPS.endText:\n this.endText();\n break;\n\n case _util.OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n\n case _util.OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n\n case _util.OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n\n case _util.OPS.setHScale:\n this.setHScale(args[0]);\n break;\n\n case _util.OPS.setTextMatrix:\n this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n\n case _util.OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n\n case _util.OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n\n case _util.OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n\n case _util.OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n\n case _util.OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n\n case _util.OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n\n case _util.OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n\n case _util.OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n\n case _util.OPS.setStrokeColorN:\n this.setStrokeColorN(args);\n break;\n\n case _util.OPS.setFillColorN:\n this.setFillColorN(args);\n break;\n\n case _util.OPS.shadingFill:\n this.shadingFill(args[0]);\n break;\n\n case _util.OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n\n case _util.OPS.setRenderingIntent:\n this.setRenderingIntent(args[0]);\n break;\n\n case _util.OPS.setFlatness:\n this.setFlatness(args[0]);\n break;\n\n case _util.OPS.setGState:\n this.setGState(args[0]);\n break;\n\n case _util.OPS.fill:\n this.fill();\n break;\n\n case _util.OPS.eoFill:\n this.eoFill();\n break;\n\n case _util.OPS.stroke:\n this.stroke();\n break;\n\n case _util.OPS.fillStroke:\n this.fillStroke();\n break;\n\n case _util.OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n\n case _util.OPS.clip:\n this.clip(\"nonzero\");\n break;\n\n case _util.OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n\n case _util.OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n\n case _util.OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n\n case _util.OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n\n case _util.OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n\n case _util.OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n\n case _util.OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n\n case _util.OPS.closePath:\n this.closePath();\n break;\n\n case _util.OPS.closeStroke:\n this.closeStroke();\n break;\n\n case _util.OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n\n case _util.OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n\n case _util.OPS.nextLine:\n this.nextLine();\n break;\n\n case _util.OPS.transform:\n this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n\n case _util.OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n\n case _util.OPS.endPath:\n this.endPath();\n break;\n\n case 92:\n this.group(opTreeElement.items);\n break;\n\n default:\n (0, _util.warn)(\"Unimplemented operator \".concat(fn));\n break;\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }, {\n key: \"setWordSpacing\",\n value: function setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n }\n }, {\n key: \"setCharSpacing\",\n value: function setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n }\n }, {\n key: \"nextLine\",\n value: function nextLine() {\n this.moveText(0, this.current.leading);\n }\n }, {\n key: \"setTextMatrix\",\n value: function setTextMatrix(a, b, c, d, e, f) {\n var current = this.current;\n current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n current.textMatrixScale = Math.hypot(a, b);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", \"\".concat(pf(current.fontSize), \"px\"));\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtElement.appendChild(current.tspan);\n }\n }, {\n key: \"beginText\",\n value: function beginText() {\n var current = this.current;\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.textMatrix = _util.IDENTITY_MATRIX;\n current.lineMatrix = _util.IDENTITY_MATRIX;\n current.textMatrixScale = 1;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n current.xcoords = [];\n current.ycoords = [];\n }\n }, {\n key: \"moveText\",\n value: function moveText(x, y) {\n var current = this.current;\n current.x = current.lineX += x;\n current.y = current.lineY += y;\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", \"\".concat(pf(current.fontSize), \"px\"));\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n }, {\n key: \"showText\",\n value: function showText(glyphs) {\n var current = this.current;\n var font = current.font;\n var fontSize = current.fontSize;\n\n if (fontSize === 0) {\n return;\n }\n\n var fontSizeScale = current.fontSizeScale;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var fontDirection = current.fontDirection;\n var textHScale = current.textHScale * fontDirection;\n var vertical = font.vertical;\n var spacingDir = vertical ? 1 : -1;\n var defaultVMetrics = font.defaultVMetrics;\n var widthAdvanceScale = fontSize * current.fontMatrix[0];\n var x = 0;\n\n var _iterator4 = _createForOfIteratorHelper(glyphs),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var glyph = _step4.value;\n\n if (glyph === null) {\n x += fontDirection * wordSpacing;\n continue;\n } else if ((0, _util.isNum)(glyph)) {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var character = glyph.fontChar;\n var scaledX = void 0,\n scaledY = void 0;\n var width = glyph.width;\n\n if (vertical) {\n var vx = void 0;\n var vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n var vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (glyph.isInFont || font.missingFile) {\n current.xcoords.push(current.x + scaledX);\n\n if (vertical) {\n current.ycoords.push(-current.y + scaledY);\n }\n\n current.tspan.textContent += character;\n } else {}\n\n var charWidth = void 0;\n\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n current.tspan.setAttributeNS(null, \"x\", current.xcoords.map(pf).join(\" \"));\n\n if (vertical) {\n current.tspan.setAttributeNS(null, \"y\", current.ycoords.map(pf).join(\" \"));\n } else {\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", \"\".concat(pf(current.fontSize), \"px\"));\n\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n }\n\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n }\n\n var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n }\n\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n }\n } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {\n current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n } else {\n current.tspan.setAttributeNS(null, \"fill\", \"none\");\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n var lineWidthScale = 1 / (current.textMatrixScale || 1);\n\n this._setStrokeAttributes(current.tspan, lineWidthScale);\n }\n\n var textMatrix = current.textMatrix;\n\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n\n current.txtElement.setAttributeNS(null, \"transform\", \"\".concat(pm(textMatrix), \" scale(\").concat(pf(textHScale), \", -1)\"));\n current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n current.txtElement.appendChild(current.tspan);\n current.txtgrp.appendChild(current.txtElement);\n\n this._ensureTransformGroup().appendChild(current.txtElement);\n }\n }, {\n key: \"setLeadingMoveText\",\n value: function setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n }, {\n key: \"addFontStyle\",\n value: function addFontStyle(fontObj) {\n if (!fontObj.data) {\n throw new Error(\"addFontStyle: No font data available, \" + 'ensure that the \"fontExtraProperties\" API parameter is set.');\n }\n\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.appendChild(this.cssStyle);\n }\n\n var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema);\n this.cssStyle.textContent += \"@font-face { font-family: \\\"\".concat(fontObj.loadedName, \"\\\";\") + \" src: url(\".concat(url, \"); }\\n\");\n }\n }, {\n key: \"setFont\",\n value: function setFont(details) {\n var current = this.current;\n var fontObj = this.commonObjs.get(details[0]);\n var size = details[1];\n current.font = fontObj;\n\n if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n\n current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n var bold = \"normal\";\n\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n\n var italic = fontObj.italic ? \"italic\" : \"normal\";\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.xcoords = [];\n current.ycoords = [];\n }\n }, {\n key: \"endText\",\n value: function endText() {\n var _current$txtElement;\n\n var current = this.current;\n\n if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && (_current$txtElement = current.txtElement) !== null && _current$txtElement !== void 0 && _current$txtElement.hasChildNodes()) {\n current.element = current.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n }, {\n key: \"setLineWidth\",\n value: function setLineWidth(width) {\n if (width > 0) {\n this.current.lineWidth = width;\n }\n }\n }, {\n key: \"setLineCap\",\n value: function setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n }\n }, {\n key: \"setLineJoin\",\n value: function setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n }\n }, {\n key: \"setMiterLimit\",\n value: function setMiterLimit(limit) {\n this.current.miterLimit = limit;\n }\n }, {\n key: \"setStrokeAlpha\",\n value: function setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n }\n }, {\n key: \"setStrokeRGBColor\",\n value: function setStrokeRGBColor(r, g, b) {\n this.current.strokeColor = _util.Util.makeHexColor(r, g, b);\n }\n }, {\n key: \"setFillAlpha\",\n value: function setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n }\n }, {\n key: \"setFillRGBColor\",\n value: function setFillRGBColor(r, g, b) {\n this.current.fillColor = _util.Util.makeHexColor(r, g, b);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n this.current.ycoords = [];\n }\n }, {\n key: \"setStrokeColorN\",\n value: function setStrokeColorN(args) {\n this.current.strokeColor = this._makeColorN_Pattern(args);\n }\n }, {\n key: \"setFillColorN\",\n value: function setFillColorN(args) {\n this.current.fillColor = this._makeColorN_Pattern(args);\n }\n }, {\n key: \"shadingFill\",\n value: function shadingFill(args) {\n var width = this.viewport.width;\n var height = this.viewport.height;\n\n var inv = _util.Util.inverseTransform(this.transformMatrix);\n\n var bl = _util.Util.applyTransform([0, 0], inv);\n\n var br = _util.Util.applyTransform([0, height], inv);\n\n var ul = _util.Util.applyTransform([width, 0], inv);\n\n var ur = _util.Util.applyTransform([width, height], inv);\n\n var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n var rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", x0);\n rect.setAttributeNS(null, \"y\", y0);\n rect.setAttributeNS(null, \"width\", x1 - x0);\n rect.setAttributeNS(null, \"height\", y1 - y0);\n rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n\n if (this.current.fillAlpha < 1) {\n rect.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n }\n\n this._ensureTransformGroup().appendChild(rect);\n }\n }, {\n key: \"_makeColorN_Pattern\",\n value: function _makeColorN_Pattern(args) {\n if (args[0] === \"TilingPattern\") {\n return this._makeTilingPattern(args);\n }\n\n return this._makeShadingPattern(args);\n }\n }, {\n key: \"_makeTilingPattern\",\n value: function _makeTilingPattern(args) {\n var color = args[1];\n var operatorList = args[2];\n var matrix = args[3] || _util.IDENTITY_MATRIX;\n\n var _args$ = _slicedToArray(args[4], 4),\n x0 = _args$[0],\n y0 = _args$[1],\n x1 = _args$[2],\n y1 = _args$[3];\n\n var xstep = args[5];\n var ystep = args[6];\n var paintType = args[7];\n var tilingId = \"shading\".concat(shadingCount++);\n\n var _Util$normalizeRect = _util.Util.normalizeRect([].concat(_toConsumableArray(_util.Util.applyTransform([x0, y0], matrix)), _toConsumableArray(_util.Util.applyTransform([x1, y1], matrix)))),\n _Util$normalizeRect2 = _slicedToArray(_Util$normalizeRect, 4),\n tx0 = _Util$normalizeRect2[0],\n ty0 = _Util$normalizeRect2[1],\n tx1 = _Util$normalizeRect2[2],\n ty1 = _Util$normalizeRect2[3];\n\n var _Util$singularValueDe = _util.Util.singularValueDecompose2dScale(matrix),\n _Util$singularValueDe2 = _slicedToArray(_Util$singularValueDe, 2),\n xscale = _Util$singularValueDe2[0],\n yscale = _Util$singularValueDe2[1];\n\n var txstep = xstep * xscale;\n var tystep = ystep * yscale;\n var tiling = this.svgFactory.createElement(\"svg:pattern\");\n tiling.setAttributeNS(null, \"id\", tilingId);\n tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n tiling.setAttributeNS(null, \"width\", txstep);\n tiling.setAttributeNS(null, \"height\", tystep);\n tiling.setAttributeNS(null, \"x\", \"\".concat(tx0));\n tiling.setAttributeNS(null, \"y\", \"\".concat(ty0));\n var svg = this.svg;\n var transformMatrix = this.transformMatrix;\n var fillColor = this.current.fillColor;\n var strokeColor = this.current.strokeColor;\n var bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n this.svg = bbox;\n this.transformMatrix = matrix;\n\n if (paintType === 2) {\n var cssColor = _util.Util.makeHexColor.apply(_util.Util, _toConsumableArray(color));\n\n this.current.fillColor = cssColor;\n this.current.strokeColor = cssColor;\n }\n\n this.executeOpTree(this.convertOpList(operatorList));\n this.svg = svg;\n this.transformMatrix = transformMatrix;\n this.current.fillColor = fillColor;\n this.current.strokeColor = strokeColor;\n tiling.appendChild(bbox.childNodes[0]);\n this.defs.appendChild(tiling);\n return \"url(#\".concat(tilingId, \")\");\n }\n }, {\n key: \"_makeShadingPattern\",\n value: function _makeShadingPattern(args) {\n if (typeof args === \"string\") {\n args = this.objs.get(args);\n }\n\n switch (args[0]) {\n case \"RadialAxial\":\n var shadingId = \"shading\".concat(shadingCount++);\n var colorStops = args[3];\n var gradient;\n\n switch (args[1]) {\n case \"axial\":\n var point0 = args[4];\n var point1 = args[5];\n gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"x1\", point0[0]);\n gradient.setAttributeNS(null, \"y1\", point0[1]);\n gradient.setAttributeNS(null, \"x2\", point1[0]);\n gradient.setAttributeNS(null, \"y2\", point1[1]);\n break;\n\n case \"radial\":\n var focalPoint = args[4];\n var circlePoint = args[5];\n var focalRadius = args[6];\n var circleRadius = args[7];\n gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n gradient.setAttributeNS(null, \"r\", circleRadius);\n gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n gradient.setAttributeNS(null, \"fr\", focalRadius);\n break;\n\n default:\n throw new Error(\"Unknown RadialAxial type: \".concat(args[1]));\n }\n\n var _iterator5 = _createForOfIteratorHelper(colorStops),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var colorStop = _step5.value;\n var stop = this.svgFactory.createElement(\"svg:stop\");\n stop.setAttributeNS(null, \"offset\", colorStop[0]);\n stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n gradient.appendChild(stop);\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n this.defs.appendChild(gradient);\n return \"url(#\".concat(shadingId, \")\");\n\n case \"Mesh\":\n (0, _util.warn)(\"Unimplemented pattern Mesh\");\n return null;\n\n case \"Dummy\":\n return \"hotpink\";\n\n default:\n throw new Error(\"Unknown IR type: \".concat(args[0]));\n }\n }\n }, {\n key: \"setDash\",\n value: function setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n }\n }, {\n key: \"constructPath\",\n value: function constructPath(ops, args) {\n var current = this.current;\n var x = current.x,\n y = current.y;\n var d = [];\n var j = 0;\n\n var _iterator6 = _createForOfIteratorHelper(ops),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var op = _step6.value;\n\n switch (op | 0) {\n case _util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n var width = args[j++];\n var height = args[j++];\n var xw = x + width;\n var yh = y + height;\n d.push(\"M\", pf(x), pf(y), \"L\", pf(xw), pf(y), \"L\", pf(xw), pf(yh), \"L\", pf(x), pf(yh), \"Z\");\n break;\n\n case _util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push(\"M\", pf(x), pf(y));\n break;\n\n case _util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push(\"L\", pf(x), pf(y));\n break;\n\n case _util.OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));\n j += 6;\n break;\n\n case _util.OPS.curveTo2:\n d.push(\"C\", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n\n case _util.OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));\n j += 4;\n break;\n\n case _util.OPS.closePath:\n d.push(\"Z\");\n break;\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n d = d.join(\" \");\n\n if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) {\n d = current.path.getAttributeNS(null, \"d\") + d;\n } else {\n current.path = this.svgFactory.createElement(\"svg:path\");\n\n this._ensureTransformGroup().appendChild(current.path);\n }\n\n current.path.setAttributeNS(null, \"d\", d);\n current.path.setAttributeNS(null, \"fill\", \"none\");\n current.element = current.path;\n current.setCurrentPoint(x, y);\n }\n }, {\n key: \"endPath\",\n value: function endPath() {\n var current = this.current;\n current.path = null;\n\n if (!this.pendingClip) {\n return;\n }\n\n if (!current.element) {\n this.pendingClip = null;\n return;\n }\n\n var clipId = \"clippath\".concat(clipCount++);\n var clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n clipPath.setAttributeNS(null, \"id\", clipId);\n clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n var clipElement = current.element.cloneNode(true);\n\n if (this.pendingClip === \"evenodd\") {\n clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n } else {\n clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n }\n\n this.pendingClip = null;\n clipPath.appendChild(clipElement);\n this.defs.appendChild(clipPath);\n\n if (current.activeClipUrl) {\n current.clipGroup = null;\n\n var _iterator7 = _createForOfIteratorHelper(this.extraStack),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var prev = _step7.value;\n prev.clipGroup = null;\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n\n clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n }\n\n current.activeClipUrl = \"url(#\".concat(clipId, \")\");\n this.tgrp = null;\n }\n }, {\n key: \"clip\",\n value: function clip(type) {\n this.pendingClip = type;\n }\n }, {\n key: \"closePath\",\n value: function closePath() {\n var current = this.current;\n\n if (current.path) {\n var d = \"\".concat(current.path.getAttributeNS(null, \"d\"), \"Z\");\n current.path.setAttributeNS(null, \"d\", d);\n }\n }\n }, {\n key: \"setLeading\",\n value: function setLeading(leading) {\n this.current.leading = -leading;\n }\n }, {\n key: \"setTextRise\",\n value: function setTextRise(textRise) {\n this.current.textRise = textRise;\n }\n }, {\n key: \"setTextRenderingMode\",\n value: function setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n }\n }, {\n key: \"setHScale\",\n value: function setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n }, {\n key: \"setRenderingIntent\",\n value: function setRenderingIntent(intent) {}\n }, {\n key: \"setFlatness\",\n value: function setFlatness(flatness) {}\n }, {\n key: \"setGState\",\n value: function setGState(states) {\n var _iterator8 = _createForOfIteratorHelper(states),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var _step8$value = _slicedToArray(_step8.value, 2),\n key = _step8$value[0],\n value = _step8$value[1];\n\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n\n case \"LC\":\n this.setLineCap(value);\n break;\n\n case \"LJ\":\n this.setLineJoin(value);\n break;\n\n case \"ML\":\n this.setMiterLimit(value);\n break;\n\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n\n case \"FL\":\n this.setFlatness(value);\n break;\n\n case \"Font\":\n this.setFont(value);\n break;\n\n case \"CA\":\n this.setStrokeAlpha(value);\n break;\n\n case \"ca\":\n this.setFillAlpha(value);\n break;\n\n default:\n (0, _util.warn)(\"Unimplemented graphic state operator \".concat(key));\n break;\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n }\n }, {\n key: \"fill\",\n value: function fill() {\n var current = this.current;\n\n if (current.element) {\n current.element.setAttributeNS(null, \"fill\", current.fillColor);\n current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n this.endPath();\n }\n }\n }, {\n key: \"stroke\",\n value: function stroke() {\n var current = this.current;\n\n if (current.element) {\n this._setStrokeAttributes(current.element);\n\n current.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n }, {\n key: \"_setStrokeAttributes\",\n value: function _setStrokeAttributes(element) {\n var lineWidthScale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var current = this.current;\n var dashArray = current.dashArray;\n\n if (lineWidthScale !== 1 && dashArray.length > 0) {\n dashArray = dashArray.map(function (value) {\n return lineWidthScale * value;\n });\n }\n\n element.setAttributeNS(null, \"stroke\", current.strokeColor);\n element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n element.setAttributeNS(null, \"stroke-width\", pf(lineWidthScale * current.lineWidth) + \"px\");\n element.setAttributeNS(null, \"stroke-dasharray\", dashArray.map(pf).join(\" \"));\n element.setAttributeNS(null, \"stroke-dashoffset\", pf(lineWidthScale * current.dashPhase) + \"px\");\n }\n }, {\n key: \"eoFill\",\n value: function eoFill() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n\n this.fill();\n }\n }, {\n key: \"fillStroke\",\n value: function fillStroke() {\n this.stroke();\n this.fill();\n }\n }, {\n key: \"eoFillStroke\",\n value: function eoFillStroke() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n\n this.fillStroke();\n }\n }, {\n key: \"closeStroke\",\n value: function closeStroke() {\n this.closePath();\n this.stroke();\n }\n }, {\n key: \"closeFillStroke\",\n value: function closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n }, {\n key: \"closeEOFillStroke\",\n value: function closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n }, {\n key: \"paintSolidColorImageMask\",\n value: function paintSolidColorImageMask() {\n var rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", \"1px\");\n rect.setAttributeNS(null, \"height\", \"1px\");\n rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n\n this._ensureTransformGroup().appendChild(rect);\n }\n }, {\n key: \"paintImageXObject\",\n value: function paintImageXObject(objId) {\n var imgData = objId.startsWith(\"g_\") ? this.commonObjs.get(objId) : this.objs.get(objId);\n\n if (!imgData) {\n (0, _util.warn)(\"Dependent image with object ID \".concat(objId, \" is not ready yet\"));\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n }\n }, {\n key: \"paintInlineImageXObject\",\n value: function paintInlineImageXObject(imgData, mask) {\n var width = imgData.width;\n var height = imgData.height;\n var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n var cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", \"0\");\n cliprect.setAttributeNS(null, \"y\", \"0\");\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n var imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-height));\n imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n imgEl.setAttributeNS(null, \"transform\", \"scale(\".concat(pf(1 / width), \" \").concat(pf(-1 / height), \")\"));\n\n if (mask) {\n mask.appendChild(imgEl);\n } else {\n this._ensureTransformGroup().appendChild(imgEl);\n }\n }\n }, {\n key: \"paintImageMaskXObject\",\n value: function paintImageMaskXObject(imgData) {\n var current = this.current;\n var width = imgData.width;\n var height = imgData.height;\n var fillColor = current.fillColor;\n current.maskId = \"mask\".concat(maskCount++);\n var mask = this.svgFactory.createElement(\"svg:mask\");\n mask.setAttributeNS(null, \"id\", current.maskId);\n var rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", pf(width));\n rect.setAttributeNS(null, \"height\", pf(height));\n rect.setAttributeNS(null, \"fill\", fillColor);\n rect.setAttributeNS(null, \"mask\", \"url(#\".concat(current.maskId, \")\"));\n this.defs.appendChild(mask);\n\n this._ensureTransformGroup().appendChild(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n }\n }, {\n key: \"paintFormXObjectBegin\",\n value: function paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n }\n\n if (bbox) {\n var width = bbox[2] - bbox[0];\n var height = bbox[3] - bbox[1];\n var cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", bbox[0]);\n cliprect.setAttributeNS(null, \"y\", bbox[1]);\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n }, {\n key: \"paintFormXObjectEnd\",\n value: function paintFormXObjectEnd() {}\n }, {\n key: \"_initialize\",\n value: function _initialize(viewport) {\n var svg = this.svgFactory.create(viewport.width, viewport.height);\n var definitions = this.svgFactory.createElement(\"svg:defs\");\n svg.appendChild(definitions);\n this.defs = definitions;\n var rootGroup = this.svgFactory.createElement(\"svg:g\");\n rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n svg.appendChild(rootGroup);\n this.svg = rootGroup;\n return svg;\n }\n }, {\n key: \"_ensureClipGroup\",\n value: function _ensureClipGroup() {\n if (!this.current.clipGroup) {\n var clipGroup = this.svgFactory.createElement(\"svg:g\");\n clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.appendChild(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n\n return this.current.clipGroup;\n }\n }, {\n key: \"_ensureTransformGroup\",\n value: function _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().appendChild(this.tgrp);\n } else {\n this.svg.appendChild(this.tgrp);\n }\n }\n\n return this.tgrp;\n }\n }]);\n\n return SVGGraphics;\n }();\n}\n\n/***/ }),\n/* 153 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFNodeStream = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(4);\n\nvar _network_utils = __w_pdfjs_require__(154);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n;\n\nvar fs = require(\"fs\");\n\nvar http = require(\"http\");\n\nvar https = require(\"https\");\n\nvar url = require(\"url\");\n\nvar fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n var parsedUrl = url.parse(sourceUrl);\n\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(\"file:///\".concat(sourceUrl));\n }\n\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n\n return parsedUrl;\n}\n\nvar PDFNodeStream = /*#__PURE__*/function () {\n function PDFNodeStream(source) {\n _classCallCheck(this, PDFNodeStream);\n\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _createClass(PDFNodeStream, [{\n key: \"_progressiveDataLength\",\n get: function get() {\n var _this$_fullRequestRea, _this$_fullRequestRea2;\n\n return (_this$_fullRequestRea = (_this$_fullRequestRea2 = this._fullRequestReader) === null || _this$_fullRequestRea2 === void 0 ? void 0 : _this$_fullRequestRea2._loaded) !== null && _this$_fullRequestRea !== void 0 ? _this$_fullRequestRea : 0;\n }\n }, {\n key: \"getFullReader\",\n value: function getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n }, {\n key: \"getRangeReader\",\n value: function getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n var rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n\n this._rangeRequestReaders.push(rangeReader);\n\n return rangeReader;\n }\n }, {\n key: \"cancelAllRequests\",\n value: function cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n var _iterator = _createForOfIteratorHelper(this._rangeRequestReaders.slice(0)),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var reader = _step.value;\n reader.cancel(reason);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }]);\n\n return PDFNodeStream;\n}();\n\nexports.PDFNodeStream = PDFNodeStream;\n\nvar BaseFullReader = /*#__PURE__*/function () {\n function BaseFullReader(stream) {\n _classCallCheck(this, BaseFullReader);\n\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n var source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = (0, _util.createPromiseCapability)();\n this._headersCapability = (0, _util.createPromiseCapability)();\n }\n\n _createClass(BaseFullReader, [{\n key: \"headersReady\",\n get: function get() {\n return this._headersCapability.promise;\n }\n }, {\n key: \"filename\",\n get: function get() {\n return this._filename;\n }\n }, {\n key: \"contentLength\",\n get: function get() {\n return this._contentLength;\n }\n }, {\n key: \"isRangeSupported\",\n get: function get() {\n return this._isRangeSupported;\n }\n }, {\n key: \"isStreamingSupported\",\n get: function get() {\n return this._isStreamingSupported;\n }\n }, {\n key: \"read\",\n value: function () {\n var _read = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee() {\n var chunk, buffer;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this._readCapability.promise;\n\n case 2:\n if (!this._done) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt(\"return\", {\n value: undefined,\n done: true\n });\n\n case 4:\n if (!this._storedError) {\n _context.next = 6;\n break;\n }\n\n throw this._storedError;\n\n case 6:\n chunk = this._readableStream.read();\n\n if (!(chunk === null)) {\n _context.next = 10;\n break;\n }\n\n this._readCapability = (0, _util.createPromiseCapability)();\n return _context.abrupt(\"return\", this.read());\n\n case 10:\n this._loaded += chunk.length;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n\n buffer = new Uint8Array(chunk).buffer;\n return _context.abrupt(\"return\", {\n value: buffer,\n done: false\n });\n\n case 14:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function read() {\n return _read.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n\n return;\n }\n\n this._readableStream.destroy(reason);\n }\n }, {\n key: \"_error\",\n value: function _error(reason) {\n this._storedError = reason;\n\n this._readCapability.resolve();\n }\n }, {\n key: \"_setReadableStream\",\n value: function _setReadableStream(readableStream) {\n var _this = this;\n\n this._readableStream = readableStream;\n readableStream.on(\"readable\", function () {\n _this._readCapability.resolve();\n });\n readableStream.on(\"end\", function () {\n readableStream.destroy();\n _this._done = true;\n\n _this._readCapability.resolve();\n });\n readableStream.on(\"error\", function (reason) {\n _this._error(reason);\n });\n\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new _util.AbortException(\"streaming is disabled\"));\n }\n\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n }]);\n\n return BaseFullReader;\n}();\n\nvar BaseRangeReader = /*#__PURE__*/function () {\n function BaseRangeReader(stream) {\n _classCallCheck(this, BaseRangeReader);\n\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = (0, _util.createPromiseCapability)();\n var source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n\n _createClass(BaseRangeReader, [{\n key: \"isStreamingSupported\",\n get: function get() {\n return this._isStreamingSupported;\n }\n }, {\n key: \"read\",\n value: function () {\n var _read2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2() {\n var chunk, buffer;\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this._readCapability.promise;\n\n case 2:\n if (!this._done) {\n _context2.next = 4;\n break;\n }\n\n return _context2.abrupt(\"return\", {\n value: undefined,\n done: true\n });\n\n case 4:\n if (!this._storedError) {\n _context2.next = 6;\n break;\n }\n\n throw this._storedError;\n\n case 6:\n chunk = this._readableStream.read();\n\n if (!(chunk === null)) {\n _context2.next = 10;\n break;\n }\n\n this._readCapability = (0, _util.createPromiseCapability)();\n return _context2.abrupt(\"return\", this.read());\n\n case 10:\n this._loaded += chunk.length;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded\n });\n }\n\n buffer = new Uint8Array(chunk).buffer;\n return _context2.abrupt(\"return\", {\n value: buffer,\n done: false\n });\n\n case 14:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function read() {\n return _read2.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n\n return;\n }\n\n this._readableStream.destroy(reason);\n }\n }, {\n key: \"_error\",\n value: function _error(reason) {\n this._storedError = reason;\n\n this._readCapability.resolve();\n }\n }, {\n key: \"_setReadableStream\",\n value: function _setReadableStream(readableStream) {\n var _this2 = this;\n\n this._readableStream = readableStream;\n readableStream.on(\"readable\", function () {\n _this2._readCapability.resolve();\n });\n readableStream.on(\"end\", function () {\n readableStream.destroy();\n _this2._done = true;\n\n _this2._readCapability.resolve();\n });\n readableStream.on(\"error\", function (reason) {\n _this2._error(reason);\n });\n\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n }]);\n\n return BaseRangeReader;\n}();\n\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers: headers\n };\n}\n\nvar PDFNodeStreamFullReader = /*#__PURE__*/function (_BaseFullReader) {\n _inherits(PDFNodeStreamFullReader, _BaseFullReader);\n\n var _super = _createSuper(PDFNodeStreamFullReader);\n\n function PDFNodeStreamFullReader(stream) {\n var _this3;\n\n _classCallCheck(this, PDFNodeStreamFullReader);\n\n _this3 = _super.call(this, stream);\n\n var handleResponse = function handleResponse(response) {\n if (response.statusCode === 404) {\n var error = new _util.MissingPDFException(\"Missing PDF \\\"\".concat(_this3._url, \"\\\".\"));\n _this3._storedError = error;\n\n _this3._headersCapability.reject(error);\n\n return;\n }\n\n _this3._headersCapability.resolve();\n\n _this3._setReadableStream(response);\n\n var getResponseHeader = function getResponseHeader(name) {\n return _this3._readableStream.headers[name.toLowerCase()];\n };\n\n var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader: getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: _this3._rangeChunkSize,\n disableRange: _this3._disableRange\n }),\n allowRangeRequests = _validateRangeRequest.allowRangeRequests,\n suggestedLength = _validateRangeRequest.suggestedLength;\n\n _this3._isRangeSupported = allowRangeRequests;\n _this3._contentLength = suggestedLength || _this3._contentLength;\n _this3._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n };\n\n _this3._request = null;\n\n if (_this3._url.protocol === \"http:\") {\n _this3._request = http.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse);\n } else {\n _this3._request = https.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse);\n }\n\n _this3._request.on(\"error\", function (reason) {\n _this3._storedError = reason;\n\n _this3._headersCapability.reject(reason);\n });\n\n _this3._request.end();\n\n return _this3;\n }\n\n return PDFNodeStreamFullReader;\n}(BaseFullReader);\n\nvar PDFNodeStreamRangeReader = /*#__PURE__*/function (_BaseRangeReader) {\n _inherits(PDFNodeStreamRangeReader, _BaseRangeReader);\n\n var _super2 = _createSuper(PDFNodeStreamRangeReader);\n\n function PDFNodeStreamRangeReader(stream, start, end) {\n var _this4;\n\n _classCallCheck(this, PDFNodeStreamRangeReader);\n\n _this4 = _super2.call(this, stream);\n _this4._httpHeaders = {};\n\n for (var property in stream.httpHeaders) {\n var value = stream.httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n _this4._httpHeaders[property] = value;\n }\n\n _this4._httpHeaders.Range = \"bytes=\".concat(start, \"-\").concat(end - 1);\n\n var handleResponse = function handleResponse(response) {\n if (response.statusCode === 404) {\n var error = new _util.MissingPDFException(\"Missing PDF \\\"\".concat(_this4._url, \"\\\".\"));\n _this4._storedError = error;\n return;\n }\n\n _this4._setReadableStream(response);\n };\n\n _this4._request = null;\n\n if (_this4._url.protocol === \"http:\") {\n _this4._request = http.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse);\n } else {\n _this4._request = https.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse);\n }\n\n _this4._request.on(\"error\", function (reason) {\n _this4._storedError = reason;\n });\n\n _this4._request.end();\n\n return _this4;\n }\n\n return PDFNodeStreamRangeReader;\n}(BaseRangeReader);\n\nvar PDFNodeStreamFsFullReader = /*#__PURE__*/function (_BaseFullReader2) {\n _inherits(PDFNodeStreamFsFullReader, _BaseFullReader2);\n\n var _super3 = _createSuper(PDFNodeStreamFsFullReader);\n\n function PDFNodeStreamFsFullReader(stream) {\n var _this5;\n\n _classCallCheck(this, PDFNodeStreamFsFullReader);\n\n _this5 = _super3.call(this, stream);\n var path = decodeURIComponent(_this5._url.path);\n\n if (fileUriRegex.test(_this5._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n fs.lstat(path, function (error, stat) {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new _util.MissingPDFException(\"Missing PDF \\\"\".concat(path, \"\\\".\"));\n }\n\n _this5._storedError = error;\n\n _this5._headersCapability.reject(error);\n\n return;\n }\n\n _this5._contentLength = stat.size;\n\n _this5._setReadableStream(fs.createReadStream(path));\n\n _this5._headersCapability.resolve();\n });\n return _this5;\n }\n\n return PDFNodeStreamFsFullReader;\n}(BaseFullReader);\n\nvar PDFNodeStreamFsRangeReader = /*#__PURE__*/function (_BaseRangeReader2) {\n _inherits(PDFNodeStreamFsRangeReader, _BaseRangeReader2);\n\n var _super4 = _createSuper(PDFNodeStreamFsRangeReader);\n\n function PDFNodeStreamFsRangeReader(stream, start, end) {\n var _this6;\n\n _classCallCheck(this, PDFNodeStreamFsRangeReader);\n\n _this6 = _super4.call(this, stream);\n var path = decodeURIComponent(_this6._url.path);\n\n if (fileUriRegex.test(_this6._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n _this6._setReadableStream(fs.createReadStream(path, {\n start: start,\n end: end - 1\n }));\n\n return _this6;\n }\n\n return PDFNodeStreamFsRangeReader;\n}(BaseRangeReader);\n\n/***/ }),\n/* 154 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.createResponseStatusError = createResponseStatusError;\nexports.extractFilenameFromHeader = extractFilenameFromHeader;\nexports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;\nexports.validateResponseStatus = validateResponseStatus;\n\nvar _util = __w_pdfjs_require__(4);\n\nvar _content_disposition = __w_pdfjs_require__(155);\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nfunction validateRangeRequestCapabilities(_ref) {\n var getResponseHeader = _ref.getResponseHeader,\n isHttp = _ref.isHttp,\n rangeChunkSize = _ref.rangeChunkSize,\n disableRange = _ref.disableRange;\n (0, _util.assert)(rangeChunkSize > 0, \"Range chunk size must be larger than zero\");\n var returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n var length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n\n returnValues.suggestedLength = length;\n\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n\n if (disableRange || !isHttp) {\n return returnValues;\n }\n\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n\n var contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n var contentDisposition = getResponseHeader(\"Content-Disposition\");\n\n if (contentDisposition) {\n var filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition);\n\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch (ex) {}\n }\n\n if ((0, _display_utils.isPdfFile)(filename)) {\n return filename;\n }\n }\n\n return null;\n}\n\nfunction createResponseStatusError(status, url) {\n if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n return new _util.MissingPDFException('Missing PDF \"' + url + '\".');\n }\n\n return new _util.UnexpectedResponseException(\"Unexpected server response (\".concat(status, \") while retrieving PDF \\\"\").concat(url, \"\\\".\"), status);\n}\n\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n/***/ }),\n/* 155 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;\n\nvar _util = __w_pdfjs_require__(4);\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n var needsEncodingFixup = true;\n var tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n\n if (tmp) {\n tmp = tmp[1];\n var filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n tmp = rfc2231getparam(contentDisposition);\n\n if (tmp) {\n var _filename = rfc2047decode(tmp);\n\n return fixupEncoding(_filename);\n }\n\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n\n if (tmp) {\n tmp = tmp[1];\n\n var _filename2 = rfc2616unquote(tmp);\n\n _filename2 = rfc2047decode(_filename2);\n return fixupEncoding(_filename2);\n }\n\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n\n try {\n var decoder = new TextDecoder(encoding, {\n fatal: true\n });\n var buffer = (0, _util.stringToBytes)(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch (e) {\n if (/^utf-?8$/i.test(encoding)) {\n try {\n value = decodeURIComponent(escape(value));\n needsEncodingFixup = false;\n } catch (err) {}\n }\n }\n }\n\n return value;\n }\n\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n\n return value;\n }\n\n function rfc2231getparam(contentDispositionStr) {\n var matches = [];\n var match;\n var iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n var _match = match,\n _match2 = _slicedToArray(_match, 4),\n n = _match2[1],\n quot = _match2[2],\n part = _match2[3];\n\n n = parseInt(n, 10);\n\n if (n in matches) {\n if (n === 0) {\n break;\n }\n\n continue;\n }\n\n matches[n] = [quot, part];\n }\n\n var parts = [];\n\n for (var _n2 = 0; _n2 < matches.length; ++_n2) {\n if (!(_n2 in matches)) {\n break;\n }\n\n var _matches$_n = _slicedToArray(matches[_n2], 2),\n _quot = _matches$_n[0],\n _part = _matches$_n[1];\n\n _part = rfc2616unquote(_part);\n\n if (_quot) {\n _part = unescape(_part);\n\n if (_n2 === 0) {\n _part = rfc5987decode(_part);\n }\n }\n\n parts.push(_part);\n }\n\n return parts.join(\"\");\n }\n\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n var parts = value.slice(1).split('\\\\\"');\n\n for (var i = 0; i < parts.length; ++i) {\n var quotindex = parts[i].indexOf('\"');\n\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n\n parts[i] = parts[i].replace(/\\\\(.)/g, \"$1\");\n }\n\n value = parts.join('\"');\n }\n\n return value;\n }\n\n function rfc5987decode(extvalue) {\n var encodingend = extvalue.indexOf(\"'\");\n\n if (encodingend === -1) {\n return extvalue;\n }\n\n var encoding = extvalue.slice(0, encodingend);\n var langvalue = extvalue.slice(encodingend + 1);\n var value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n\n return value.replace(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replace(/_/g, \" \");\n text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n\n try {\n text = atob(text);\n } catch (e) {}\n\n return textdecode(charset, text);\n });\n }\n\n return \"\";\n}\n\n/***/ }),\n/* 156 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFNetworkStream = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(4);\n\nvar _network_utils = __w_pdfjs_require__(154);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n;\nvar OK_RESPONSE = 200;\nvar PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n var data = xhr.response;\n\n if (typeof data !== \"string\") {\n return data;\n }\n\n var array = (0, _util.stringToBytes)(data);\n return array.buffer;\n}\n\nvar NetworkManager = /*#__PURE__*/function () {\n function NetworkManager(url) {\n var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, NetworkManager);\n\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null);\n this.withCredentials = args.withCredentials || false;\n\n this.getXhr = args.getXhr || function NetworkManager_getXhr() {\n return new XMLHttpRequest();\n };\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n\n _createClass(NetworkManager, [{\n key: \"requestRange\",\n value: function requestRange(begin, end, listeners) {\n var args = {\n begin: begin,\n end: end\n };\n\n for (var prop in listeners) {\n args[prop] = listeners[prop];\n }\n\n return this.request(args);\n }\n }, {\n key: \"requestFull\",\n value: function requestFull(listeners) {\n return this.request(listeners);\n }\n }, {\n key: \"request\",\n value: function request(args) {\n var xhr = this.getXhr();\n var xhrId = this.currXhrId++;\n var pendingRequest = this.pendingRequests[xhrId] = {\n xhr: xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n\n for (var property in this.httpHeaders) {\n var value = this.httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n xhr.setRequestHeader(property, value);\n }\n\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", \"bytes=\".concat(args.begin, \"-\").concat(args.end - 1));\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n\n xhr.responseType = \"arraybuffer\";\n\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n }, {\n key: \"onProgress\",\n value: function onProgress(xhrId, evt) {\n var _pendingRequest$onPro;\n\n var pendingRequest = this.pendingRequests[xhrId];\n\n if (!pendingRequest) {\n return;\n }\n\n (_pendingRequest$onPro = pendingRequest.onProgress) === null || _pendingRequest$onPro === void 0 ? void 0 : _pendingRequest$onPro.call(pendingRequest, evt);\n }\n }, {\n key: \"onStateChange\",\n value: function onStateChange(xhrId, evt) {\n var pendingRequest = this.pendingRequests[xhrId];\n\n if (!pendingRequest) {\n return;\n }\n\n var xhr = pendingRequest.xhr;\n\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n if (xhr.status === 0 && this.isHttp) {\n var _pendingRequest$onErr;\n\n (_pendingRequest$onErr = pendingRequest.onError) === null || _pendingRequest$onErr === void 0 ? void 0 : _pendingRequest$onErr.call(pendingRequest, xhr.status);\n return;\n }\n\n var xhrStatus = xhr.status || OK_RESPONSE;\n var ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n var _pendingRequest$onErr2;\n\n (_pendingRequest$onErr2 = pendingRequest.onError) === null || _pendingRequest$onErr2 === void 0 ? void 0 : _pendingRequest$onErr2.call(pendingRequest, xhr.status);\n return;\n }\n\n var chunk = getArrayBuffer(xhr);\n\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n var rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n var matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk: chunk\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk: chunk\n });\n } else {\n var _pendingRequest$onErr3;\n\n (_pendingRequest$onErr3 = pendingRequest.onError) === null || _pendingRequest$onErr3 === void 0 ? void 0 : _pendingRequest$onErr3.call(pendingRequest, xhr.status);\n }\n }\n }, {\n key: \"getRequestXhr\",\n value: function getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n }, {\n key: \"isPendingRequest\",\n value: function isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n }, {\n key: \"abortRequest\",\n value: function abortRequest(xhrId) {\n var xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n }]);\n\n return NetworkManager;\n}();\n\nvar PDFNetworkStream = /*#__PURE__*/function () {\n function PDFNetworkStream(source) {\n _classCallCheck(this, PDFNetworkStream);\n\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _createClass(PDFNetworkStream, [{\n key: \"_onRangeRequestReaderClosed\",\n value: function _onRangeRequestReaderClosed(reader) {\n var i = this._rangeRequestReaders.indexOf(reader);\n\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n }, {\n key: \"getFullReader\",\n value: function getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n }, {\n key: \"getRangeReader\",\n value: function getRangeReader(begin, end) {\n var reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n\n this._rangeRequestReaders.push(reader);\n\n return reader;\n }\n }, {\n key: \"cancelAllRequests\",\n value: function cancelAllRequests(reason) {\n var _this$_fullRequestRea;\n\n (_this$_fullRequestRea = this._fullRequestReader) === null || _this$_fullRequestRea === void 0 ? void 0 : _this$_fullRequestRea.cancel(reason);\n\n var _iterator = _createForOfIteratorHelper(this._rangeRequestReaders.slice(0)),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var reader = _step.value;\n reader.cancel(reason);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }]);\n\n return PDFNetworkStream;\n}();\n\nexports.PDFNetworkStream = PDFNetworkStream;\n\nvar PDFNetworkStreamFullRequestReader = /*#__PURE__*/function () {\n function PDFNetworkStreamFullRequestReader(manager, source) {\n _classCallCheck(this, PDFNetworkStreamFullRequestReader);\n\n this._manager = manager;\n var args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = (0, _util.createPromiseCapability)();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n\n _createClass(PDFNetworkStreamFullRequestReader, [{\n key: \"_onHeadersReceived\",\n value: function _onHeadersReceived() {\n var fullRequestXhrId = this._fullRequestId;\n\n var fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n var getResponseHeader = function getResponseHeader(name) {\n return fullRequestXhr.getResponseHeader(name);\n };\n\n var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader: getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n }),\n allowRangeRequests = _validateRangeRequest.allowRangeRequests,\n suggestedLength = _validateRangeRequest.suggestedLength;\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n }\n }, {\n key: \"_onDone\",\n value: function _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n\n this._done = true;\n\n if (this._cachedChunks.length > 0) {\n return;\n }\n\n var _iterator2 = _createForOfIteratorHelper(this._requests),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _requestCapability = _step2.value;\n\n _requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n this._requests.length = 0;\n }\n }, {\n key: \"_onError\",\n value: function _onError(status) {\n this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url);\n\n this._headersReceivedCapability.reject(this._storedError);\n\n var _iterator3 = _createForOfIteratorHelper(this._requests),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var requestCapability = _step3.value;\n requestCapability.reject(this._storedError);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n }, {\n key: \"_onProgress\",\n value: function _onProgress(evt) {\n var _this$onProgress;\n\n (_this$onProgress = this.onProgress) === null || _this$onProgress === void 0 ? void 0 : _this$onProgress.call(this, {\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n }, {\n key: \"filename\",\n get: function get() {\n return this._filename;\n }\n }, {\n key: \"isRangeSupported\",\n get: function get() {\n return this._isRangeSupported;\n }\n }, {\n key: \"isStreamingSupported\",\n get: function get() {\n return this._isStreamingSupported;\n }\n }, {\n key: \"contentLength\",\n get: function get() {\n return this._contentLength;\n }\n }, {\n key: \"headersReady\",\n get: function get() {\n return this._headersReceivedCapability.promise;\n }\n }, {\n key: \"read\",\n value: function () {\n var _read = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee() {\n var chunk, requestCapability;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!this._storedError) {\n _context.next = 2;\n break;\n }\n\n throw this._storedError;\n\n case 2:\n if (!(this._cachedChunks.length > 0)) {\n _context.next = 5;\n break;\n }\n\n chunk = this._cachedChunks.shift();\n return _context.abrupt(\"return\", {\n value: chunk,\n done: false\n });\n\n case 5:\n if (!this._done) {\n _context.next = 7;\n break;\n }\n\n return _context.abrupt(\"return\", {\n value: undefined,\n done: true\n });\n\n case 7:\n requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return _context.abrupt(\"return\", requestCapability.promise);\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function read() {\n return _read.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n this._done = true;\n\n this._headersReceivedCapability.reject(reason);\n\n var _iterator4 = _createForOfIteratorHelper(this._requests),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var requestCapability = _step4.value;\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n this._requests.length = 0;\n\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n\n this._fullRequestReader = null;\n }\n }]);\n\n return PDFNetworkStreamFullRequestReader;\n}();\n\nvar PDFNetworkStreamRangeRequestReader = /*#__PURE__*/function () {\n function PDFNetworkStreamRangeRequestReader(manager, begin, end) {\n _classCallCheck(this, PDFNetworkStreamRangeRequestReader);\n\n this._manager = manager;\n var args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n\n _createClass(PDFNetworkStreamRangeRequestReader, [{\n key: \"_close\",\n value: function _close() {\n var _this$onClosed;\n\n (_this$onClosed = this.onClosed) === null || _this$onClosed === void 0 ? void 0 : _this$onClosed.call(this, this);\n }\n }, {\n key: \"_onDone\",\n value: function _onDone(data) {\n var chunk = data.chunk;\n\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n\n this._done = true;\n\n var _iterator5 = _createForOfIteratorHelper(this._requests),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var _requestCapability2 = _step5.value;\n\n _requestCapability2.resolve({\n value: undefined,\n done: true\n });\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n this._requests.length = 0;\n\n this._close();\n }\n }, {\n key: \"_onError\",\n value: function _onError(status) {\n this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url);\n\n var _iterator6 = _createForOfIteratorHelper(this._requests),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var requestCapability = _step6.value;\n requestCapability.reject(this._storedError);\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n }, {\n key: \"_onProgress\",\n value: function _onProgress(evt) {\n if (!this.isStreamingSupported) {\n var _this$onProgress2;\n\n (_this$onProgress2 = this.onProgress) === null || _this$onProgress2 === void 0 ? void 0 : _this$onProgress2.call(this, {\n loaded: evt.loaded\n });\n }\n }\n }, {\n key: \"isStreamingSupported\",\n get: function get() {\n return false;\n }\n }, {\n key: \"read\",\n value: function () {\n var _read2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2() {\n var chunk, requestCapability;\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!this._storedError) {\n _context2.next = 2;\n break;\n }\n\n throw this._storedError;\n\n case 2:\n if (!(this._queuedChunk !== null)) {\n _context2.next = 6;\n break;\n }\n\n chunk = this._queuedChunk;\n this._queuedChunk = null;\n return _context2.abrupt(\"return\", {\n value: chunk,\n done: false\n });\n\n case 6:\n if (!this._done) {\n _context2.next = 8;\n break;\n }\n\n return _context2.abrupt(\"return\", {\n value: undefined,\n done: true\n });\n\n case 8:\n requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return _context2.abrupt(\"return\", requestCapability.promise);\n\n case 11:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function read() {\n return _read2.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n this._done = true;\n\n var _iterator7 = _createForOfIteratorHelper(this._requests),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var requestCapability = _step7.value;\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n\n this._requests.length = 0;\n\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n\n this._close();\n }\n }]);\n\n return PDFNetworkStreamRangeRequestReader;\n}();\n\n/***/ }),\n/* 157 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFFetchStream = void 0;\n\nvar _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));\n\nvar _util = __w_pdfjs_require__(4);\n\nvar _network_utils = __w_pdfjs_require__(154);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n;\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers: headers,\n signal: abortController === null || abortController === void 0 ? void 0 : abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\n\nfunction createHeaders(httpHeaders) {\n var headers = new Headers();\n\n for (var property in httpHeaders) {\n var value = httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n headers.append(property, value);\n }\n\n return headers;\n}\n\nvar PDFFetchStream = /*#__PURE__*/function () {\n function PDFFetchStream(source) {\n _classCallCheck(this, PDFFetchStream);\n\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _createClass(PDFFetchStream, [{\n key: \"_progressiveDataLength\",\n get: function get() {\n var _this$_fullRequestRea, _this$_fullRequestRea2;\n\n return (_this$_fullRequestRea = (_this$_fullRequestRea2 = this._fullRequestReader) === null || _this$_fullRequestRea2 === void 0 ? void 0 : _this$_fullRequestRea2._loaded) !== null && _this$_fullRequestRea !== void 0 ? _this$_fullRequestRea : 0;\n }\n }, {\n key: \"getFullReader\",\n value: function getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n }, {\n key: \"getRangeReader\",\n value: function getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n var reader = new PDFFetchStreamRangeReader(this, begin, end);\n\n this._rangeRequestReaders.push(reader);\n\n return reader;\n }\n }, {\n key: \"cancelAllRequests\",\n value: function cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n var _iterator = _createForOfIteratorHelper(this._rangeRequestReaders.slice(0)),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var reader = _step.value;\n reader.cancel(reason);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }]);\n\n return PDFFetchStream;\n}();\n\nexports.PDFFetchStream = PDFFetchStream;\n\nvar PDFFetchStreamReader = /*#__PURE__*/function () {\n function PDFFetchStreamReader(stream) {\n var _this = this;\n\n _classCallCheck(this, PDFFetchStreamReader);\n\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n var source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = (0, _util.createPromiseCapability)();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._headers = createHeaders(this._stream.httpHeaders);\n var url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n\n _this._reader = response.body.getReader();\n\n _this._headersCapability.resolve();\n\n var getResponseHeader = function getResponseHeader(name) {\n return response.headers.get(name);\n };\n\n var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader: getResponseHeader,\n isHttp: _this._stream.isHttp,\n rangeChunkSize: _this._rangeChunkSize,\n disableRange: _this._disableRange\n }),\n allowRangeRequests = _validateRangeRequest.allowRangeRequests,\n suggestedLength = _validateRangeRequest.suggestedLength;\n\n _this._isRangeSupported = allowRangeRequests;\n _this._contentLength = suggestedLength || _this._contentLength;\n _this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n\n if (!_this._isStreamingSupported && _this._isRangeSupported) {\n _this.cancel(new _util.AbortException(\"Streaming is disabled.\"));\n }\n })[\"catch\"](this._headersCapability.reject);\n this.onProgress = null;\n }\n\n _createClass(PDFFetchStreamReader, [{\n key: \"headersReady\",\n get: function get() {\n return this._headersCapability.promise;\n }\n }, {\n key: \"filename\",\n get: function get() {\n return this._filename;\n }\n }, {\n key: \"contentLength\",\n get: function get() {\n return this._contentLength;\n }\n }, {\n key: \"isRangeSupported\",\n get: function get() {\n return this._isRangeSupported;\n }\n }, {\n key: \"isStreamingSupported\",\n get: function get() {\n return this._isStreamingSupported;\n }\n }, {\n key: \"read\",\n value: function () {\n var _read = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee() {\n var _yield$this$_reader$r, value, done, buffer;\n\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this._headersCapability.promise;\n\n case 2:\n _context.next = 4;\n return this._reader.read();\n\n case 4:\n _yield$this$_reader$r = _context.sent;\n value = _yield$this$_reader$r.value;\n done = _yield$this$_reader$r.done;\n\n if (!done) {\n _context.next = 9;\n break;\n }\n\n return _context.abrupt(\"return\", {\n value: value,\n done: done\n });\n\n case 9:\n this._loaded += value.byteLength;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n\n buffer = new Uint8Array(value).buffer;\n return _context.abrupt(\"return\", {\n value: buffer,\n done: false\n });\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function read() {\n return _read.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n }]);\n\n return PDFFetchStreamReader;\n}();\n\nvar PDFFetchStreamRangeReader = /*#__PURE__*/function () {\n function PDFFetchStreamRangeReader(stream, begin, end) {\n var _this2 = this;\n\n _classCallCheck(this, PDFFetchStreamRangeReader);\n\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n var source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = (0, _util.createPromiseCapability)();\n this._isStreamingSupported = !source.disableStream;\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._headers = createHeaders(this._stream.httpHeaders);\n\n this._headers.append(\"Range\", \"bytes=\".concat(begin, \"-\").concat(end - 1));\n\n var url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n\n _this2._readCapability.resolve();\n\n _this2._reader = response.body.getReader();\n })[\"catch\"](this._readCapability.reject);\n this.onProgress = null;\n }\n\n _createClass(PDFFetchStreamRangeReader, [{\n key: \"isStreamingSupported\",\n get: function get() {\n return this._isStreamingSupported;\n }\n }, {\n key: \"read\",\n value: function () {\n var _read2 = _asyncToGenerator( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2() {\n var _yield$this$_reader$r2, value, done, buffer;\n\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this._readCapability.promise;\n\n case 2:\n _context2.next = 4;\n return this._reader.read();\n\n case 4:\n _yield$this$_reader$r2 = _context2.sent;\n value = _yield$this$_reader$r2.value;\n done = _yield$this$_reader$r2.done;\n\n if (!done) {\n _context2.next = 9;\n break;\n }\n\n return _context2.abrupt(\"return\", {\n value: value,\n done: done\n });\n\n case 9:\n this._loaded += value.byteLength;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded\n });\n }\n\n buffer = new Uint8Array(value).buffer;\n return _context2.abrupt(\"return\", {\n value: buffer,\n done: false\n });\n\n case 13:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function read() {\n return _read2.apply(this, arguments);\n }\n\n return read;\n }()\n }, {\n key: \"cancel\",\n value: function cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n }]);\n\n return PDFFetchStreamRangeReader;\n}();\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n/******/ \t\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/node module decorator */\n/******/ \t(() => {\n/******/ \t\t__w_pdfjs_require__.nmd = (module) => {\n/******/ \t\t\tmodule.paths = [];\n/******/ \t\t\tif (!module.children) module.children = [];\n/******/ \t\t\treturn module;\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be in strict mode.\n(() => {\n\"use strict\";\nvar exports = __webpack_exports__;\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"AnnotationLayer\", ({\n enumerable: true,\n get: function get() {\n return _annotation_layer.AnnotationLayer;\n }\n}));\nObject.defineProperty(exports, \"AnnotationMode\", ({\n enumerable: true,\n get: function get() {\n return _util.AnnotationMode;\n }\n}));\nObject.defineProperty(exports, \"CMapCompressionType\", ({\n enumerable: true,\n get: function get() {\n return _util.CMapCompressionType;\n }\n}));\nObject.defineProperty(exports, \"GlobalWorkerOptions\", ({\n enumerable: true,\n get: function get() {\n return _worker_options.GlobalWorkerOptions;\n }\n}));\nObject.defineProperty(exports, \"InvalidPDFException\", ({\n enumerable: true,\n get: function get() {\n return _util.InvalidPDFException;\n }\n}));\nObject.defineProperty(exports, \"LinkTarget\", ({\n enumerable: true,\n get: function get() {\n return _display_utils.LinkTarget;\n }\n}));\nObject.defineProperty(exports, \"LoopbackPort\", ({\n enumerable: true,\n get: function get() {\n return _api.LoopbackPort;\n }\n}));\nObject.defineProperty(exports, \"MissingPDFException\", ({\n enumerable: true,\n get: function get() {\n return _util.MissingPDFException;\n }\n}));\nObject.defineProperty(exports, \"OPS\", ({\n enumerable: true,\n get: function get() {\n return _util.OPS;\n }\n}));\nObject.defineProperty(exports, \"PDFDataRangeTransport\", ({\n enumerable: true,\n get: function get() {\n return _api.PDFDataRangeTransport;\n }\n}));\nObject.defineProperty(exports, \"PDFDateString\", ({\n enumerable: true,\n get: function get() {\n return _display_utils.PDFDateString;\n }\n}));\nObject.defineProperty(exports, \"PDFWorker\", ({\n enumerable: true,\n get: function get() {\n return _api.PDFWorker;\n }\n}));\nObject.defineProperty(exports, \"PasswordResponses\", ({\n enumerable: true,\n get: function get() {\n return _util.PasswordResponses;\n }\n}));\nObject.defineProperty(exports, \"PermissionFlag\", ({\n enumerable: true,\n get: function get() {\n return _util.PermissionFlag;\n }\n}));\nObject.defineProperty(exports, \"PixelsPerInch\", ({\n enumerable: true,\n get: function get() {\n return _display_utils.PixelsPerInch;\n }\n}));\nObject.defineProperty(exports, \"RenderingCancelledException\", ({\n enumerable: true,\n get: function get() {\n return _display_utils.RenderingCancelledException;\n }\n}));\nObject.defineProperty(exports, \"SVGGraphics\", ({\n enumerable: true,\n get: function get() {\n return _svg.SVGGraphics;\n }\n}));\nObject.defineProperty(exports, \"UNSUPPORTED_FEATURES\", ({\n enumerable: true,\n get: function get() {\n return _util.UNSUPPORTED_FEATURES;\n }\n}));\nObject.defineProperty(exports, \"UnexpectedResponseException\", ({\n enumerable: true,\n get: function get() {\n return _util.UnexpectedResponseException;\n }\n}));\nObject.defineProperty(exports, \"Util\", ({\n enumerable: true,\n get: function get() {\n return _util.Util;\n }\n}));\nObject.defineProperty(exports, \"VerbosityLevel\", ({\n enumerable: true,\n get: function get() {\n return _util.VerbosityLevel;\n }\n}));\nObject.defineProperty(exports, \"XfaLayer\", ({\n enumerable: true,\n get: function get() {\n return _xfa_layer.XfaLayer;\n }\n}));\nObject.defineProperty(exports, \"addLinkAttributes\", ({\n enumerable: true,\n get: function get() {\n return _display_utils.addLinkAttributes;\n }\n}));\nObject.defineProperty(exports, \"build\", ({\n enumerable: true,\n get: function get() {\n return _api.build;\n }\n}));\nObject.defineProperty(exports, \"createObjectURL\", ({\n enumerable: true,\n get: function get() {\n return _util.createObjectURL;\n }\n}));\nObject.defineProperty(exports, \"createPromiseCapability\", ({\n enumerable: true,\n get: function get() {\n return _util.createPromiseCapability;\n }\n}));\nObject.defineProperty(exports, \"createValidAbsoluteUrl\", ({\n enumerable: true,\n get: function get() {\n return _util.createValidAbsoluteUrl;\n }\n}));\nObject.defineProperty(exports, \"getDocument\", ({\n enumerable: true,\n get: function get() {\n return _api.getDocument;\n }\n}));\nObject.defineProperty(exports, \"getFilenameFromUrl\", ({\n enumerable: true,\n get: function get() {\n return _display_utils.getFilenameFromUrl;\n }\n}));\nObject.defineProperty(exports, \"getPdfFilenameFromUrl\", ({\n enumerable: true,\n get: function get() {\n return _display_utils.getPdfFilenameFromUrl;\n }\n}));\nObject.defineProperty(exports, \"getXfaPageViewport\", ({\n enumerable: true,\n get: function get() {\n return _display_utils.getXfaPageViewport;\n }\n}));\nObject.defineProperty(exports, \"isPdfFile\", ({\n enumerable: true,\n get: function get() {\n return _display_utils.isPdfFile;\n }\n}));\nObject.defineProperty(exports, \"loadScript\", ({\n enumerable: true,\n get: function get() {\n return _display_utils.loadScript;\n }\n}));\nObject.defineProperty(exports, \"removeNullCharacters\", ({\n enumerable: true,\n get: function get() {\n return _util.removeNullCharacters;\n }\n}));\nObject.defineProperty(exports, \"renderTextLayer\", ({\n enumerable: true,\n get: function get() {\n return _text_layer.renderTextLayer;\n }\n}));\nObject.defineProperty(exports, \"shadow\", ({\n enumerable: true,\n get: function get() {\n return _util.shadow;\n }\n}));\nObject.defineProperty(exports, \"version\", ({\n enumerable: true,\n get: function get() {\n return _api.version;\n }\n}));\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _util = __w_pdfjs_require__(4);\n\nvar _api = __w_pdfjs_require__(136);\n\nvar _annotation_layer = __w_pdfjs_require__(148);\n\nvar _worker_options = __w_pdfjs_require__(142);\n\nvar _is_node = __w_pdfjs_require__(6);\n\nvar _text_layer = __w_pdfjs_require__(151);\n\nvar _svg = __w_pdfjs_require__(152);\n\nvar _xfa_layer = __w_pdfjs_require__(150);\n\nvar pdfjsVersion = '2.12.313';\nvar pdfjsBuild = 'a2ae56f39';\n{\n if (_is_node.isNodeJS) {\n var _require = __w_pdfjs_require__(153),\n PDFNodeStream = _require.PDFNodeStream;\n\n (0, _api.setPDFNetworkStreamFactory)(function (params) {\n return new PDFNodeStream(params);\n });\n } else {\n var _require2 = __w_pdfjs_require__(156),\n PDFNetworkStream = _require2.PDFNetworkStream;\n\n var _require3 = __w_pdfjs_require__(157),\n PDFFetchStream = _require3.PDFFetchStream;\n\n (0, _api.setPDFNetworkStreamFactory)(function (params) {\n if ((0, _display_utils.isValidFetchUrl)(params.url)) {\n return new PDFFetchStream(params);\n }\n\n return new PDFNetworkStream(params);\n });\n }\n}\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=pdf.js.map","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\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}","export default (function (value) {\n if (typeof value !== 'object' || value === null) return false;\n var proto = value;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(value) === proto;\n});","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","export var DEFAULT_NAMESPACE = '/';\nexport var ACTION_TYPE_DELIMITER = '||';","var matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nvar htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\n\nvar unescapeHtmlEntity = function unescapeHtmlEntity(m) {\n return htmlEntities[m];\n};\n\nexport var unescape = function unescape(text) {\n return text.replace(matchHtmlEntity, unescapeHtmlEntity);\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { createContext } from 'react';\nimport { unescape } from './unescape';\nvar defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape: unescape\n};\nvar i18nInstance;\nexport var I18nContext = createContext();\nexport function setDefaults() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options);\n}\nexport function getDefaults() {\n return defaultOptions;\n}\nexport var ReportNamespaces = function () {\n function ReportNamespaces() {\n _classCallCheck(this, ReportNamespaces);\n\n this.usedNamespaces = {};\n }\n\n _createClass(ReportNamespaces, [{\n key: \"addUsedNamespaces\",\n value: function addUsedNamespaces(namespaces) {\n var _this = this;\n\n namespaces.forEach(function (ns) {\n if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n });\n }\n }, {\n key: \"getUsedNamespaces\",\n value: function getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n }]);\n\n return ReportNamespaces;\n}();\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}\nexport var initReactI18next = {\n type: '3rdParty',\n init: function init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};\nexport function composeInitialProps(ForComponent) {\n return function (ctx) {\n return new Promise(function (resolve) {\n var i18nInitialProps = getInitialProps();\n\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n resolve(_objectSpread(_objectSpread({}, componentsInitialProps), i18nInitialProps));\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n };\n}\nexport function getInitialProps() {\n var i18n = getI18n();\n var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n var ret = {};\n var initialI18nStore = {};\n i18n.languages.forEach(function (l) {\n initialI18nStore[l] = {};\n namespaces.forEach(function (ns) {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","export function warn() {\n if (console && console.warn) {\n var _console;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'string') args[0] = \"react-i18next:: \".concat(args[0]);\n\n (_console = console).warn.apply(_console, args);\n }\n}\nvar alreadyWarned = {};\nexport function warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn.apply(void 0, args);\n}\nexport function loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, function () {\n if (i18n.isInitialized) {\n cb();\n } else {\n var initialized = function initialized() {\n setTimeout(function () {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n\n i18n.on('initialized', initialized);\n }\n });\n}\n\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var lng = i18n.languages[0];\n var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n var lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = i18n.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\n\nexport function hasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n\n var isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n\n if (!isNewerI18next) {\n return oldI18nextHasLoadedNamespace(ns, i18n, options);\n }\n\n return i18n.hasLoadedNamespace(ns, {\n precheck: function precheck(i18nInstance, loadNotPending) {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n}\nexport function getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\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","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\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","/**\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\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","export default (function (value) {\n return typeof value === 'function';\n});","export default (function (value) {\n return value;\n});","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, AccountInfo, Logger, PerformanceCallbackFunction } from \"@azure/msal-common\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { SilentRequest } from \"../request/SilentRequest\";\r\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\r\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\r\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\r\nimport { WrapperSKU } from \"../utils/BrowserConstants\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\r\nimport { ITokenCache } from \"../cache/ITokenCache\";\r\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest\";\r\nimport { BrowserConfiguration } from \"../config/Configuration\";\r\n\r\nexport interface IPublicClientApplication {\r\n initialize(): Promise<void>;\r\n acquireTokenPopup(request: PopupRequest): Promise<AuthenticationResult>;\r\n acquireTokenRedirect(request: RedirectRequest): Promise<void>;\r\n acquireTokenSilent(silentRequest: SilentRequest): Promise<AuthenticationResult>;\r\n acquireTokenByCode(request: AuthorizationCodeRequest): Promise<AuthenticationResult>;\r\n addEventCallback(callback: Function): string | null;\r\n removeEventCallback(callbackId: string): void;\r\n addPerformanceCallback(callback: PerformanceCallbackFunction): string;\r\n removePerformanceCallback(callbackId: string): boolean;\r\n enableAccountStorageEvents(): void;\r\n disableAccountStorageEvents(): void;\r\n getAccountByHomeId(homeAccountId: string): AccountInfo | null;\r\n getAccountByLocalId(localId: string): AccountInfo | null;\r\n getAccountByUsername(userName: string): AccountInfo | null;\r\n getAllAccounts(): AccountInfo[];\r\n handleRedirectPromise(hash?: string): Promise<AuthenticationResult | null>;\r\n loginPopup(request?: PopupRequest): Promise<AuthenticationResult>;\r\n loginRedirect(request?: RedirectRequest): Promise<void>;\r\n logout(logoutRequest?: EndSessionRequest): Promise<void>;\r\n logoutRedirect(logoutRequest?: EndSessionRequest): Promise<void>;\r\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise<void>;\r\n ssoSilent(request: SsoSilentRequest): Promise<AuthenticationResult>;\r\n getTokenCache(): ITokenCache;\r\n getLogger(): Logger;\r\n setLogger(logger: Logger): void;\r\n setActiveAccount(account: AccountInfo | null): void;\r\n getActiveAccount(): AccountInfo | null;\r\n initializeWrapperLibrary(sku: WrapperSKU, version: string): void;\r\n setNavigationClient(navigationClient: INavigationClient): void;\r\n getConfiguration(): BrowserConfiguration;\r\n}\r\n\r\nexport const stubbedPublicClientApplication: IPublicClientApplication = {\r\n initialize: () => {\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\r\n },\r\n acquireTokenPopup: () => {\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\r\n },\r\n acquireTokenRedirect: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n acquireTokenSilent: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\r\n acquireTokenByCode: () => {\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\r\n },\r\n getAllAccounts: () => {\r\n return [];\t\r\n },\t\r\n getAccountByHomeId: () => {\r\n return null;\r\n },\r\n getAccountByUsername: () => {\t\r\n return null;\t\r\n },\t\r\n getAccountByLocalId: () => {\r\n return null;\r\n },\r\n handleRedirectPromise: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n loginPopup: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n loginRedirect: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n logout: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n logoutRedirect: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\r\n logoutPopup: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\r\n ssoSilent: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\r\n addEventCallback: () => {\r\n return null;\r\n },\r\n removeEventCallback: () => {\r\n return;\r\n },\r\n addPerformanceCallback: () => {\r\n return \"\";\r\n },\r\n removePerformanceCallback: () => {\r\n return false;\r\n },\r\n enableAccountStorageEvents: () => {\r\n return;\r\n },\r\n disableAccountStorageEvents: () => {\r\n return;\r\n },\r\n getTokenCache: () => {\r\n throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();\r\n },\r\n getLogger: () => {\r\n throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();\r\n },\r\n setLogger: () => {\r\n return;\r\n },\r\n setActiveAccount: () => {\r\n return;\r\n },\r\n getActiveAccount: () => {\r\n return null;\r\n },\r\n initializeWrapperLibrary: () => {\r\n return;\r\n },\r\n setNavigationClient: () => {\r\n return;\r\n },\r\n getConfiguration: () => {\r\n throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();\r\n }\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, AuthError, AccountInfo } from \"@azure/msal-common\";\r\nimport { EventType } from \"./EventType\";\r\nimport { InteractionStatus, InteractionType } from \"../utils/BrowserConstants\";\r\nimport { PopupRequest, RedirectRequest, SilentRequest, SsoSilentRequest, EndSessionRequest } from \"..\";\r\n\r\nexport type EventMessage = {\r\n eventType: EventType;\r\n interactionType: InteractionType | null;\r\n payload: EventPayload;\r\n error: EventError;\r\n timestamp: number;\r\n};\r\n\r\nexport type PopupEvent = {\r\n popupWindow: Window;\r\n};\r\n\r\nexport type EventPayload = AccountInfo | PopupRequest | RedirectRequest | SilentRequest | SsoSilentRequest | EndSessionRequest | AuthenticationResult | PopupEvent | null;\r\n\r\nexport type EventError = AuthError | Error | null;\r\n\r\nexport type EventCallbackFunction = (message: EventMessage) => void;\r\n\r\nexport class EventMessageUtils {\r\n\r\n /**\r\n * Gets interaction status from event message\r\n * @param message\r\n * @param currentStatus\r\n */\r\n static getInteractionStatusFromEvent(message: EventMessage, currentStatus?: InteractionStatus): InteractionStatus|null {\r\n switch (message.eventType) {\r\n case EventType.LOGIN_START:\r\n return InteractionStatus.Login;\r\n case EventType.SSO_SILENT_START:\r\n return InteractionStatus.SsoSilent;\r\n case EventType.ACQUIRE_TOKEN_START:\r\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\r\n return InteractionStatus.AcquireToken;\r\n }\r\n break;\r\n case EventType.HANDLE_REDIRECT_START:\r\n return InteractionStatus.HandleRedirect;\r\n case EventType.LOGOUT_START:\r\n return InteractionStatus.Logout;\r\n case EventType.SSO_SILENT_SUCCESS:\r\n case EventType.SSO_SILENT_FAILURE:\r\n if (currentStatus && currentStatus !== InteractionStatus.SsoSilent) {\r\n // Prevent this event from clearing any status other than ssoSilent\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n case EventType.LOGOUT_END:\r\n if (currentStatus && currentStatus !== InteractionStatus.Logout) {\r\n // Prevent this event from clearing any status other than logout\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n case EventType.HANDLE_REDIRECT_END:\r\n if (currentStatus && currentStatus !== InteractionStatus.HandleRedirect) {\r\n // Prevent this event from clearing any status other than handleRedirect\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n case EventType.LOGIN_SUCCESS:\r\n case EventType.LOGIN_FAILURE:\r\n case EventType.ACQUIRE_TOKEN_SUCCESS:\r\n case EventType.ACQUIRE_TOKEN_FAILURE:\r\n case EventType.RESTORE_FROM_BFCACHE:\r\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\r\n if (currentStatus && currentStatus !== InteractionStatus.Login && currentStatus !== InteractionStatus.AcquireToken) {\r\n // Prevent this event from clearing any status other than login or acquireToken\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n return null;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { IPublicClientApplication, stubbedPublicClientApplication, Logger, InteractionStatus, AccountInfo } from \"@azure/msal-browser\";\r\n\r\nexport interface IMsalContext {\r\n instance: IPublicClientApplication;\r\n inProgress: InteractionStatus;\r\n accounts: AccountInfo[];\r\n logger: Logger;\r\n}\r\n\r\n/*\r\n * Stubbed context implementation\r\n * Only used when there is no provider, which is an unsupported scenario\r\n */\r\nconst defaultMsalContext: IMsalContext = {\r\n instance: stubbedPublicClientApplication,\r\n inProgress: InteractionStatus.None,\r\n accounts: [],\r\n logger: new Logger({})\r\n};\r\n\r\nexport const MsalContext = React.createContext<IMsalContext>(\r\n defaultMsalContext\r\n);\r\nexport const MsalConsumer = MsalContext.Consumer;\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\nimport { AccountInfo } from \"@azure/msal-browser\";\r\n\r\ntype FaaCFunction = <T>(args: T) => React.ReactNode;\r\n\r\nexport function getChildrenOrFunction<T>(\r\n children: React.ReactNode | FaaCFunction,\r\n args: T\r\n): React.ReactNode {\r\n if (typeof children === \"function\") {\r\n return children(args);\r\n }\r\n return children;\r\n}\r\n\r\n/*\r\n * Utility types\r\n * Reference: https://github.com/piotrwitek/utility-types\r\n */\r\ntype SetDifference<A, B> = A extends B ? never : A;\r\ntype SetComplement<A, A1 extends A> = SetDifference<A, A1>;\r\nexport type Subtract<T extends T1, T1 extends object> = Pick<T,SetComplement<keyof T, keyof T1>>;\r\n\r\n/**\r\n * Helper function to determine whether 2 arrays are equal\r\n * Used to avoid unnecessary state updates\r\n * @param arrayA \r\n * @param arrayB \r\n */\r\nexport function accountArraysAreEqual(arrayA: Array<AccountIdentifiers>, arrayB: Array<AccountIdentifiers>): boolean {\r\n if (arrayA.length !== arrayB.length) {\r\n return false;\r\n }\r\n\r\n const comparisonArray = [...arrayB];\r\n\r\n return arrayA.every((elementA) => {\r\n const elementB = comparisonArray.shift();\r\n if (!elementA || !elementB) {\r\n return false;\r\n }\r\n\r\n return (elementA.homeAccountId === elementB.homeAccountId) && \r\n (elementA.localAccountId === elementB.localAccountId) &&\r\n (elementA.username === elementB.username);\r\n });\r\n}\r\n\r\nexport function getAccountByIdentifiers(allAccounts: AccountInfo[], accountIdentifiers: AccountIdentifiers): AccountInfo | null {\r\n if (allAccounts.length > 0 && (accountIdentifiers.homeAccountId || accountIdentifiers.localAccountId || accountIdentifiers.username)) {\r\n const matchedAccounts = allAccounts.filter(accountObj => {\r\n if (accountIdentifiers.username && accountIdentifiers.username.toLowerCase() !== accountObj.username.toLowerCase()) {\r\n return false;\r\n }\r\n if (accountIdentifiers.homeAccountId && accountIdentifiers.homeAccountId.toLowerCase() !== accountObj.homeAccountId.toLowerCase()) {\r\n return false;\r\n }\r\n if (accountIdentifiers.localAccountId && accountIdentifiers.localAccountId.toLowerCase() !== accountObj.localAccountId.toLowerCase()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n\r\n return matchedAccounts[0] || null;\r\n } else {\r\n return null;\r\n }\r\n}\r\n","/* eslint-disable header/header */\r\nexport const name = \"@azure/msal-browser\";\r\nexport const version = \"2.38.3\";\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport React, { useEffect, useReducer, PropsWithChildren, useMemo} from \"react\";\r\nimport {\r\n IPublicClientApplication,\r\n EventMessage,\r\n EventMessageUtils,\r\n InteractionStatus,\r\n Logger,\r\n WrapperSKU,\r\n AccountInfo\r\n} from \"@azure/msal-browser\";\r\nimport { MsalContext, IMsalContext } from \"./MsalContext\";\r\nimport { accountArraysAreEqual } from \"./utils/utilities\";\r\nimport { name as SKU, version } from \"./packageMetadata\";\r\n\r\nexport type MsalProviderProps = PropsWithChildren<{\r\n instance: IPublicClientApplication;\r\n}>;\r\n\r\ntype MsalState = {\r\n inProgress: InteractionStatus;\r\n accounts: AccountInfo[];\r\n};\r\n\r\nenum MsalProviderActionType {\r\n UNBLOCK_INPROGRESS = \"UNBLOCK_INPROGRESS\",\r\n EVENT = \"EVENT\"\r\n}\r\n\r\ntype MsalProviderReducerAction = {\r\n type: MsalProviderActionType,\r\n payload: {\r\n logger: Logger;\r\n instance: IPublicClientApplication;\r\n message?: EventMessage;\r\n };\r\n};\r\n\r\n/**\r\n * Returns the next inProgress and accounts state based on event message\r\n * @param previousState \r\n * @param action \r\n */\r\nconst reducer = (previousState: MsalState, action: MsalProviderReducerAction): MsalState => {\r\n const { type, payload } = action;\r\n let newInProgress = previousState.inProgress;\r\n\r\n switch (type) {\r\n case MsalProviderActionType.UNBLOCK_INPROGRESS:\r\n if (previousState.inProgress === InteractionStatus.Startup){\r\n newInProgress = InteractionStatus.None;\r\n payload.logger.info(\"MsalProvider - handleRedirectPromise resolved, setting inProgress to 'none'\");\r\n }\r\n break;\r\n case MsalProviderActionType.EVENT:\r\n const message = payload.message as EventMessage;\r\n const status = EventMessageUtils.getInteractionStatusFromEvent(message, previousState.inProgress);\r\n if (status) {\r\n payload.logger.info(`MsalProvider - ${message.eventType} results in setting inProgress from ${previousState.inProgress} to ${status}`);\r\n newInProgress = status;\r\n }\r\n break;\r\n default:\r\n throw new Error(`Unknown action type: ${type}`);\r\n }\r\n \r\n const currentAccounts = payload.instance.getAllAccounts();\r\n if (newInProgress !== previousState.inProgress && \r\n !accountArraysAreEqual(currentAccounts, previousState.accounts)) {\r\n // Both inProgress and accounts changed\r\n return {\r\n ...previousState,\r\n inProgress: newInProgress,\r\n accounts: currentAccounts\r\n };\r\n } else if (newInProgress !== previousState.inProgress) {\r\n // Only only inProgress changed\r\n return {\r\n ...previousState,\r\n inProgress: newInProgress\r\n };\r\n } else if (!accountArraysAreEqual(currentAccounts, previousState.accounts)) {\r\n // Only accounts changed\r\n return {\r\n ...previousState,\r\n accounts: currentAccounts\r\n };\r\n } else {\r\n // Nothing changed\r\n return previousState;\r\n }\r\n};\r\n\r\n/**\r\n * MSAL context provider component. This must be rendered above any other components that use MSAL.\r\n */\r\nexport function MsalProvider({instance, children}: MsalProviderProps): React.ReactElement {\r\n useEffect(() => {\r\n instance.initializeWrapperLibrary(WrapperSKU.React, version);\r\n }, [instance]);\r\n // Create a logger instance for msal-react with the same options as PublicClientApplication\r\n const logger = useMemo(() => {\r\n return instance.getLogger().clone(SKU, version);\r\n }, [instance]);\r\n\r\n const [state, updateState] = useReducer(reducer, undefined, () => {\r\n // Lazy initialization of the initial state\r\n return {\r\n inProgress: InteractionStatus.Startup,\r\n accounts: instance.getAllAccounts()\r\n };\r\n });\r\n \r\n useEffect(() => {\r\n const callbackId = instance.addEventCallback((message: EventMessage) => {\r\n updateState({\r\n payload: {\r\n instance,\r\n logger,\r\n message\r\n }, \r\n type: MsalProviderActionType.EVENT\r\n });\r\n });\r\n logger.verbose(`MsalProvider - Registered event callback with id: ${callbackId}`);\r\n\r\n instance.initialize().then(() => {\r\n instance.handleRedirectPromise().catch(() => {\r\n // Errors should be handled by listening to the LOGIN_FAILURE event\r\n return;\r\n }).finally(() => {\r\n /*\r\n * If handleRedirectPromise returns a cached promise the necessary events may not be fired\r\n * This is a fallback to prevent inProgress from getting stuck in 'startup'\r\n */\r\n updateState({\r\n payload: {\r\n instance,\r\n logger\r\n },\r\n type: MsalProviderActionType.UNBLOCK_INPROGRESS \r\n });\r\n });\r\n });\r\n\r\n return () => {\r\n // Remove callback when component unmounts or accounts change\r\n if (callbackId) {\r\n logger.verbose(`MsalProvider - Removing event callback ${callbackId}`);\r\n instance.removeEventCallback(callbackId);\r\n }\r\n };\r\n }, [instance, logger]);\r\n\r\n const contextValue: IMsalContext = {\r\n instance,\r\n inProgress: state.inProgress,\r\n accounts: state.accounts,\r\n logger\r\n };\r\n\r\n return (\r\n <MsalContext.Provider value={contextValue}>\r\n {children}\r\n </MsalContext.Provider>\r\n );\r\n}\r\n\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { useContext } from \"react\";\r\nimport { IMsalContext, MsalContext } from \"../MsalContext\";\r\n\r\n/**\r\n * Returns Msal Context values\r\n */\r\nexport const useMsal = (): IMsalContext => useContext(MsalContext);\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { useState, useEffect } from \"react\";\r\nimport { useMsal } from \"./useMsal\";\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\nimport { AccountInfo, InteractionStatus } from \"@azure/msal-browser\";\r\nimport { getAccountByIdentifiers } from \"../utils/utilities\";\r\n\r\nfunction isAuthenticated(allAccounts: AccountInfo[], matchAccount?: AccountIdentifiers): boolean {\r\n if(matchAccount && (matchAccount.username || matchAccount.homeAccountId || matchAccount.localAccountId)) {\r\n return !!getAccountByIdentifiers(allAccounts, matchAccount);\r\n } \r\n\r\n return allAccounts.length > 0;\r\n}\r\n\r\n/**\r\n * Returns whether or not a user is currently signed-in. Optionally provide 1 or more accountIdentifiers to determine if a specific user is signed-in\r\n * @param matchAccount \r\n */\r\nexport function useIsAuthenticated(matchAccount?: AccountIdentifiers): boolean {\r\n const { accounts: allAccounts, inProgress } = useMsal();\r\n\r\n const [hasAuthenticated, setHasAuthenticated] = useState<boolean>(() => {\r\n if (inProgress === InteractionStatus.Startup) {\r\n return false;\r\n }\r\n return isAuthenticated(allAccounts, matchAccount);\r\n });\r\n\r\n useEffect(() => {\r\n setHasAuthenticated(isAuthenticated(allAccounts, matchAccount));\r\n }, [allAccounts, matchAccount]);\r\n\r\n return hasAuthenticated;\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { useState, useEffect } from \"react\";\r\nimport { AccountInfo, IPublicClientApplication, AccountEntity } from \"@azure/msal-browser\";\r\nimport { useMsal } from \"./useMsal\";\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\nimport { getAccountByIdentifiers } from \"../utils/utilities\";\r\n\r\nfunction getAccount(instance: IPublicClientApplication, accountIdentifiers?: AccountIdentifiers): AccountInfo | null {\r\n if (!accountIdentifiers || (!accountIdentifiers.homeAccountId && !accountIdentifiers.localAccountId && !accountIdentifiers.username)) {\r\n // If no account identifiers are provided, return active account\r\n return instance.getActiveAccount();\r\n }\r\n\r\n return getAccountByIdentifiers(instance.getAllAccounts(), accountIdentifiers);\r\n}\r\n\r\n/**\r\n * Given 1 or more accountIdentifiers, returns the Account object if the user is signed-in\r\n * @param accountIdentifiers \r\n */\r\nexport function useAccount(accountIdentifiers?: AccountIdentifiers): AccountInfo | null {\r\n const { instance, inProgress, logger } = useMsal();\r\n\r\n const [account, setAccount] = useState<AccountInfo|null>(() => getAccount(instance, accountIdentifiers));\r\n\r\n useEffect(() => {\r\n setAccount((currentAccount: AccountInfo | null) => {\r\n const nextAccount = getAccount(instance, accountIdentifiers);\r\n if (!AccountEntity.accountInfoIsEqual(currentAccount, nextAccount, true)) {\r\n logger.info(\"useAccount - Updating account\");\r\n return nextAccount;\r\n }\r\n\r\n return currentAccount;\r\n });\r\n }, [inProgress, accountIdentifiers, instance, logger]);\r\n\r\n return account;\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"@azure/msal-browser\";\r\n\r\nexport const ReactAuthErrorMessage = {\r\n invalidInteractionType: {\r\n code: \"invalid_interaction_type\",\r\n desc: \"The provided interaction type is invalid.\"\r\n },\r\n unableToFallbackToInteraction: {\r\n code: \"unable_to_fallback_to_interaction\",\r\n desc: \"Interaction is required but another interaction is already in progress. Please try again when the current interaction is complete.\"\r\n }\r\n};\r\n\r\nexport class ReactAuthError extends AuthError {\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n\r\n Object.setPrototypeOf(this, ReactAuthError.prototype);\r\n this.name = \"ReactAuthError\";\r\n }\r\n\r\n static createInvalidInteractionTypeError(): ReactAuthError {\r\n return new ReactAuthError(ReactAuthErrorMessage.invalidInteractionType.code, ReactAuthErrorMessage.invalidInteractionType.desc);\r\n }\r\n\r\n static createUnableToFallbackToInteractionError(): ReactAuthError {\r\n return new ReactAuthError(ReactAuthErrorMessage.unableToFallbackToInteraction.code, ReactAuthErrorMessage.unableToFallbackToInteraction.desc);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { useCallback, useEffect, useState, useRef } from \"react\";\r\nimport { PopupRequest, RedirectRequest, SsoSilentRequest, InteractionType, AuthenticationResult, AuthError, EventMessage, EventType, InteractionStatus, SilentRequest, InteractionRequiredAuthError, OIDC_DEFAULT_SCOPES } from \"@azure/msal-browser\";\r\nimport { useIsAuthenticated } from \"./useIsAuthenticated\";\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\nimport { useMsal } from \"./useMsal\";\r\nimport { useAccount } from \"./useAccount\";\r\nimport { ReactAuthError } from \"../error/ReactAuthError\";\r\n\r\nexport type MsalAuthenticationResult = {\r\n login: (callbackInteractionType?: InteractionType | undefined, callbackRequest?: PopupRequest | RedirectRequest | SilentRequest) => Promise<AuthenticationResult | null>; \r\n acquireToken: (callbackInteractionType?: InteractionType | undefined, callbackRequest?: SilentRequest | undefined) => Promise<AuthenticationResult | null>;\r\n result: AuthenticationResult|null;\r\n error: AuthError|null;\r\n};\r\n\r\n/**\r\n * If a user is not currently signed in this hook invokes a login. Failed logins can be retried using the login callback returned.\r\n * If a user is currently signed in this hook attempts to acquire a token. Subsequent token requests can use the acquireToken callback returned.\r\n * Optionally provide a request object to be used in the login/acquireToken call.\r\n * Optionally provide a specific user that should be logged in.\r\n * @param interactionType \r\n * @param authenticationRequest \r\n * @param accountIdentifiers \r\n */\r\nexport function useMsalAuthentication(\r\n interactionType: InteractionType, \r\n authenticationRequest?: PopupRequest|RedirectRequest|SsoSilentRequest, \r\n accountIdentifiers?: AccountIdentifiers\r\n): MsalAuthenticationResult {\r\n const { instance, inProgress, logger } = useMsal();\r\n const isAuthenticated = useIsAuthenticated(accountIdentifiers);\r\n const account = useAccount(accountIdentifiers);\r\n const [[result, error], setResponse] = useState<[AuthenticationResult|null, AuthError|null]>([null, null]);\r\n\r\n // Used to prevent state updates after unmount\r\n const mounted = useRef(true);\r\n useEffect(() => {\r\n return () => {\r\n mounted.current = false;\r\n };\r\n },[]);\r\n\r\n // Boolean used to check if interaction is in progress in acquireTokenSilent fallback. Use Ref instead of state to prevent acquireToken function from being regenerated on each change to interactionInProgress value\r\n const interactionInProgress = useRef(inProgress !== InteractionStatus.None);\r\n useEffect(() => {\r\n interactionInProgress.current = inProgress !== InteractionStatus.None;\r\n }, [inProgress]);\r\n\r\n // Flag used to control when the hook calls login/acquireToken\r\n const shouldAcquireToken = useRef(true);\r\n useEffect(() => {\r\n if (!!error) {\r\n // Errors should be handled by consuming component\r\n shouldAcquireToken.current = false;\r\n return;\r\n }\r\n\r\n if (!!result) {\r\n // Token has already been acquired, consuming component/application is responsible for renewing\r\n shouldAcquireToken.current = false;\r\n return;\r\n }\r\n }, [error, result]);\r\n\r\n const login = useCallback(async (callbackInteractionType?: InteractionType, callbackRequest?: PopupRequest|RedirectRequest|SsoSilentRequest): Promise<AuthenticationResult|null> => {\r\n const loginType = callbackInteractionType || interactionType;\r\n const loginRequest = callbackRequest || authenticationRequest;\r\n switch (loginType) {\r\n case InteractionType.Popup:\r\n logger.verbose(\"useMsalAuthentication - Calling loginPopup\");\r\n return instance.loginPopup(loginRequest as PopupRequest);\r\n case InteractionType.Redirect:\r\n // This promise is not expected to resolve due to full frame redirect\r\n logger.verbose(\"useMsalAuthentication - Calling loginRedirect\");\r\n return instance.loginRedirect(loginRequest as RedirectRequest).then(null);\r\n case InteractionType.Silent:\r\n logger.verbose(\"useMsalAuthentication - Calling ssoSilent\");\r\n return instance.ssoSilent(loginRequest as SsoSilentRequest);\r\n default:\r\n throw ReactAuthError.createInvalidInteractionTypeError();\r\n }\r\n }, [instance, interactionType, authenticationRequest, logger]);\r\n\r\n const acquireToken = useCallback(async (callbackInteractionType?: InteractionType, callbackRequest?: SilentRequest): Promise<AuthenticationResult|null> => {\r\n const fallbackInteractionType = callbackInteractionType || interactionType;\r\n\r\n let tokenRequest: SilentRequest;\r\n\r\n if (callbackRequest) {\r\n logger.trace(\"useMsalAuthentication - acquireToken - Using request provided in the callback\");\r\n tokenRequest = {\r\n ...callbackRequest\r\n };\r\n } else if (authenticationRequest) {\r\n logger.trace(\"useMsalAuthentication - acquireToken - Using request provided in the hook\");\r\n tokenRequest = {\r\n ...authenticationRequest,\r\n scopes: authenticationRequest.scopes || OIDC_DEFAULT_SCOPES\r\n };\r\n } else {\r\n logger.trace(\"useMsalAuthentication - acquireToken - No request object provided, using default request.\");\r\n tokenRequest = {\r\n scopes: OIDC_DEFAULT_SCOPES\r\n };\r\n }\r\n \r\n if (!tokenRequest.account && account) {\r\n logger.trace(\"useMsalAuthentication - acquireToken - Attaching account to request\");\r\n tokenRequest.account = account;\r\n }\r\n\r\n const getToken = async (): Promise<AuthenticationResult|null> => {\r\n logger.verbose(\"useMsalAuthentication - Calling acquireTokenSilent\");\r\n return instance.acquireTokenSilent(tokenRequest).catch(async (e: AuthError) => {\r\n if (e instanceof InteractionRequiredAuthError) {\r\n if (!interactionInProgress.current) {\r\n logger.error(\"useMsalAuthentication - Interaction required, falling back to interaction\");\r\n return login(fallbackInteractionType, tokenRequest);\r\n } else {\r\n logger.error(\"useMsalAuthentication - Interaction required but is already in progress. Please try again, if needed, after interaction completes.\");\r\n throw ReactAuthError.createUnableToFallbackToInteractionError();\r\n }\r\n }\r\n\r\n throw e;\r\n });\r\n };\r\n\r\n return getToken().then((response: AuthenticationResult|null) => {\r\n if (mounted.current) {\r\n setResponse([response, null]);\r\n }\r\n return response;\r\n }).catch((e: AuthError) => {\r\n if (mounted.current) {\r\n setResponse([null, e]);\r\n }\r\n throw e;\r\n });\r\n }, [instance, interactionType, authenticationRequest, logger, account, login]);\r\n\r\n useEffect(() => {\r\n const callbackId = instance.addEventCallback((message: EventMessage) => {\r\n switch(message.eventType) {\r\n case EventType.LOGIN_SUCCESS:\r\n case EventType.SSO_SILENT_SUCCESS:\r\n if (message.payload) {\r\n setResponse([message.payload as AuthenticationResult, null]);\r\n }\r\n break;\r\n case EventType.LOGIN_FAILURE:\r\n case EventType.SSO_SILENT_FAILURE:\r\n if (message.error) {\r\n setResponse([null, message.error as AuthError]);\r\n }\r\n break;\r\n }\r\n });\r\n logger.verbose(`useMsalAuthentication - Registered event callback with id: ${callbackId}`);\r\n\r\n return () => {\r\n if (callbackId) {\r\n logger.verbose(`useMsalAuthentication - Removing event callback ${callbackId}`);\r\n instance.removeEventCallback(callbackId);\r\n }\r\n };\r\n }, [instance, logger]);\r\n\r\n useEffect(() => {\r\n if (shouldAcquireToken.current && inProgress === InteractionStatus.None) {\r\n shouldAcquireToken.current = false;\r\n if (!isAuthenticated) {\r\n logger.info(\"useMsalAuthentication - No user is authenticated, attempting to login\");\r\n login().catch(() => {\r\n // Errors are saved in state above\r\n return;\r\n });\r\n } else if (account) {\r\n logger.info(\"useMsalAuthentication - User is authenticated, attempting to acquire token\");\r\n acquireToken().catch(() => {\r\n // Errors are saved in state above\r\n return;\r\n });\r\n }\r\n }\r\n }, [isAuthenticated, account, inProgress, login, acquireToken, logger]);\r\n\r\n return { \r\n login, \r\n acquireToken, \r\n result, \r\n error\r\n };\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants } from \"../utils/Constants\";\r\nimport { AuthError } from \"./AuthError\";\r\n\r\n/**\r\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\r\n */\r\nexport const InteractionRequiredServerErrorMessage = [\r\n \"interaction_required\",\r\n \"consent_required\",\r\n \"login_required\"\r\n];\r\n\r\nexport const InteractionRequiredAuthSubErrorMessage = [\r\n \"message_only\",\r\n \"additional_action\",\r\n \"basic_action\",\r\n \"user_password_expired\",\r\n \"consent_required\"\r\n];\r\n\r\n/**\r\n * Interaction required errors defined by the SDK\r\n */\r\nexport const InteractionRequiredAuthErrorMessage = {\r\n noTokensFoundError: {\r\n code: \"no_tokens_found\",\r\n desc: \"No refresh token found in the cache. Please sign-in.\"\r\n },\r\n native_account_unavailable: {\r\n code: \"native_account_unavailable\",\r\n desc: \"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.\"\r\n }\r\n};\r\n\r\n/**\r\n * Error thrown when user interaction is required.\r\n */\r\nexport class InteractionRequiredAuthError extends AuthError {\r\n /**\r\n * The time the error occured at\r\n */\r\n timestamp: string;\r\n\r\n /**\r\n * TraceId associated with the error\r\n */\r\n traceId: string;\r\n\r\n /**\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/claims-challenge.md\r\n * \r\n * A string with extra claims needed for the token request to succeed\r\n * web site: redirect the user to the authorization page and set the extra claims\r\n * web api: include the claims in the WWW-Authenticate header that are sent back to the client so that it knows to request a token with the extra claims\r\n * desktop application or browser context: include the claims when acquiring the token interactively\r\n * app to app context (client_credentials): include the claims in the AcquireTokenByClientCredential request\r\n */\r\n claims: string;\r\n\r\n constructor(errorCode?: string, errorMessage?: string, subError?: string, timestamp?: string, traceId?: string, correlationId?: string, claims?: string) {\r\n super(errorCode, errorMessage, subError);\r\n Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\r\n \r\n this.timestamp = timestamp || Constants.EMPTY_STRING;\r\n this.traceId = traceId || Constants.EMPTY_STRING;\r\n this.correlationId = correlationId || Constants.EMPTY_STRING;\r\n this.claims = claims || Constants.EMPTY_STRING;\r\n this.name = \"InteractionRequiredAuthError\";\r\n }\r\n\r\n /**\r\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\r\n * @param errorCode \r\n * @param errorString \r\n * @param subError \r\n */\r\n static isInteractionRequiredError(errorCode?: string, errorString?: string, subError?: string): boolean {\r\n const isInteractionRequiredErrorCode = !!errorCode && InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\r\n const isInteractionRequiredSubError = !!subError && InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\r\n const isInteractionRequiredErrorDesc = !!errorString && InteractionRequiredServerErrorMessage.some((irErrorCode) => {\r\n return errorString.indexOf(irErrorCode) > -1;\r\n });\r\n\r\n return isInteractionRequiredErrorCode || isInteractionRequiredErrorDesc || isInteractionRequiredSubError;\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the authorization code required for a token request is null or empty.\r\n */\r\n static createNoTokensFoundError(): InteractionRequiredAuthError {\r\n return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.noTokensFoundError.code, InteractionRequiredAuthErrorMessage.noTokensFoundError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the native broker returns ACCOUNT_UNAVAILABLE status, indicating that the account was removed and interactive sign-in is required\r\n * @returns \r\n */\r\n static createNativeAccountUnavailableError(): InteractionRequiredAuthError {\r\n return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.native_account_unavailable.code, InteractionRequiredAuthErrorMessage.native_account_unavailable.desc);\r\n }\r\n}\r\n","'use strict';\n\nvar Config = {\n DEBUG: false,\n LIB_VERSION: '2.49.0'\n};\n\n// since es6 imports are static and we run unit tests from the console, window won't be defined when importing this file\nvar window$1;\nif (typeof(window) === 'undefined') {\n var loc = {\n hostname: ''\n };\n window$1 = {\n navigator: { userAgent: '' },\n document: {\n location: loc,\n referrer: ''\n },\n screen: { width: 0, height: 0 },\n location: loc\n };\n} else {\n window$1 = window;\n}\n\n/*\n * Saved references to long variable names, so that closure compiler can\n * minimize file size.\n */\n\nvar ArrayProto = Array.prototype;\nvar FuncProto = Function.prototype;\nvar ObjProto = Object.prototype;\nvar slice = ArrayProto.slice;\nvar toString = ObjProto.toString;\nvar hasOwnProperty = ObjProto.hasOwnProperty;\nvar windowConsole = window$1.console;\nvar navigator = window$1.navigator;\nvar document$1 = window$1.document;\nvar windowOpera = window$1.opera;\nvar screen = window$1.screen;\nvar userAgent = navigator.userAgent;\nvar nativeBind = FuncProto.bind;\nvar nativeForEach = ArrayProto.forEach;\nvar nativeIndexOf = ArrayProto.indexOf;\nvar nativeMap = ArrayProto.map;\nvar nativeIsArray = Array.isArray;\nvar breaker = {};\nvar _ = {\n trim: function(str) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n};\n\n// Console override\nvar console = {\n /** @type {function(...*)} */\n log: function() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n try {\n windowConsole.log.apply(windowConsole, arguments);\n } catch (err) {\n _.each(arguments, function(arg) {\n windowConsole.log(arg);\n });\n }\n }\n },\n /** @type {function(...*)} */\n warn: function() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel warning:'].concat(_.toArray(arguments));\n try {\n windowConsole.warn.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function(arg) {\n windowConsole.warn(arg);\n });\n }\n }\n },\n /** @type {function(...*)} */\n error: function() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel error:'].concat(_.toArray(arguments));\n try {\n windowConsole.error.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function(arg) {\n windowConsole.error(arg);\n });\n }\n }\n },\n /** @type {function(...*)} */\n critical: function() {\n if (!_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel error:'].concat(_.toArray(arguments));\n try {\n windowConsole.error.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function(arg) {\n windowConsole.error(arg);\n });\n }\n }\n }\n};\n\nvar log_func_with_prefix = function(func, prefix) {\n return function() {\n arguments[0] = '[' + prefix + '] ' + arguments[0];\n return func.apply(console, arguments);\n };\n};\nvar console_with_prefix = function(prefix) {\n return {\n log: log_func_with_prefix(console.log, prefix),\n error: log_func_with_prefix(console.error, prefix),\n critical: log_func_with_prefix(console.critical, prefix)\n };\n};\n\n\n// UNDERSCORE\n// Embed part of the Underscore Library\n_.bind = function(func, context) {\n var args, bound;\n if (nativeBind && func.bind === nativeBind) {\n return nativeBind.apply(func, slice.call(arguments, 1));\n }\n if (!_.isFunction(func)) {\n throw new TypeError();\n }\n args = slice.call(arguments, 2);\n bound = function() {\n if (!(this instanceof bound)) {\n return func.apply(context, args.concat(slice.call(arguments)));\n }\n var ctor = {};\n ctor.prototype = func.prototype;\n var self = new ctor();\n ctor.prototype = null;\n var result = func.apply(self, args.concat(slice.call(arguments)));\n if (Object(result) === result) {\n return result;\n }\n return self;\n };\n return bound;\n};\n\n/**\n * @param {*=} obj\n * @param {function(...*)=} iterator\n * @param {Object=} context\n */\n_.each = function(obj, iterator, context) {\n if (obj === null || obj === undefined) {\n return;\n }\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) {\n return;\n }\n }\n } else {\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n if (iterator.call(context, obj[key], key, obj) === breaker) {\n return;\n }\n }\n }\n }\n};\n\n_.extend = function(obj) {\n _.each(slice.call(arguments, 1), function(source) {\n for (var prop in source) {\n if (source[prop] !== void 0) {\n obj[prop] = source[prop];\n }\n }\n });\n return obj;\n};\n\n_.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n};\n\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// var bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\n_.isFunction = function(f) {\n try {\n return /^\\s*\\bfunction\\b/.test(f);\n } catch (x) {\n return false;\n }\n};\n\n_.isArguments = function(obj) {\n return !!(obj && hasOwnProperty.call(obj, 'callee'));\n};\n\n_.toArray = function(iterable) {\n if (!iterable) {\n return [];\n }\n if (iterable.toArray) {\n return iterable.toArray();\n }\n if (_.isArray(iterable)) {\n return slice.call(iterable);\n }\n if (_.isArguments(iterable)) {\n return slice.call(iterable);\n }\n return _.values(iterable);\n};\n\n_.map = function(arr, callback, context) {\n if (nativeMap && arr.map === nativeMap) {\n return arr.map(callback, context);\n } else {\n var results = [];\n _.each(arr, function(item) {\n results.push(callback.call(context, item));\n });\n return results;\n }\n};\n\n_.keys = function(obj) {\n var results = [];\n if (obj === null) {\n return results;\n }\n _.each(obj, function(value, key) {\n results[results.length] = key;\n });\n return results;\n};\n\n_.values = function(obj) {\n var results = [];\n if (obj === null) {\n return results;\n }\n _.each(obj, function(value) {\n results[results.length] = value;\n });\n return results;\n};\n\n_.include = function(obj, target) {\n var found = false;\n if (obj === null) {\n return found;\n }\n if (nativeIndexOf && obj.indexOf === nativeIndexOf) {\n return obj.indexOf(target) != -1;\n }\n _.each(obj, function(value) {\n if (found || (found = (value === target))) {\n return breaker;\n }\n });\n return found;\n};\n\n_.includes = function(str, needle) {\n return str.indexOf(needle) !== -1;\n};\n\n// Underscore Addons\n_.inherit = function(subclass, superclass) {\n subclass.prototype = new superclass();\n subclass.prototype.constructor = subclass;\n subclass.superclass = superclass.prototype;\n return subclass;\n};\n\n_.isObject = function(obj) {\n return (obj === Object(obj) && !_.isArray(obj));\n};\n\n_.isEmptyObject = function(obj) {\n if (_.isObject(obj)) {\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n return false;\n }\n }\n return true;\n }\n return false;\n};\n\n_.isUndefined = function(obj) {\n return obj === void 0;\n};\n\n_.isString = function(obj) {\n return toString.call(obj) == '[object String]';\n};\n\n_.isDate = function(obj) {\n return toString.call(obj) == '[object Date]';\n};\n\n_.isNumber = function(obj) {\n return toString.call(obj) == '[object Number]';\n};\n\n_.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n};\n\n_.encodeDates = function(obj) {\n _.each(obj, function(v, k) {\n if (_.isDate(v)) {\n obj[k] = _.formatDate(v);\n } else if (_.isObject(v)) {\n obj[k] = _.encodeDates(v); // recurse\n }\n });\n return obj;\n};\n\n_.timestamp = function() {\n Date.now = Date.now || function() {\n return +new Date;\n };\n return Date.now();\n};\n\n_.formatDate = function(d) {\n // YYYY-MM-DDTHH:MM:SS in UTC\n function pad(n) {\n return n < 10 ? '0' + n : n;\n }\n return d.getUTCFullYear() + '-' +\n pad(d.getUTCMonth() + 1) + '-' +\n pad(d.getUTCDate()) + 'T' +\n pad(d.getUTCHours()) + ':' +\n pad(d.getUTCMinutes()) + ':' +\n pad(d.getUTCSeconds());\n};\n\n_.strip_empty_properties = function(p) {\n var ret = {};\n _.each(p, function(v, k) {\n if (_.isString(v) && v.length > 0) {\n ret[k] = v;\n }\n });\n return ret;\n};\n\n/*\n * this function returns a copy of object after truncating it. If\n * passed an Array or Object it will iterate through obj and\n * truncate all the values recursively.\n */\n_.truncate = function(obj, length) {\n var ret;\n\n if (typeof(obj) === 'string') {\n ret = obj.slice(0, length);\n } else if (_.isArray(obj)) {\n ret = [];\n _.each(obj, function(val) {\n ret.push(_.truncate(val, length));\n });\n } else if (_.isObject(obj)) {\n ret = {};\n _.each(obj, function(val, key) {\n ret[key] = _.truncate(val, length);\n });\n } else {\n ret = obj;\n }\n\n return ret;\n};\n\n_.JSONEncode = (function() {\n return function(mixed_val) {\n var value = mixed_val;\n var quote = function(string) {\n var escapable = /[\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g; // eslint-disable-line no-control-regex\n var meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n };\n\n escapable.lastIndex = 0;\n return escapable.test(string) ?\n '\"' + string.replace(escapable, function(a) {\n var c = meta[a];\n return typeof c === 'string' ? c :\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' :\n '\"' + string + '\"';\n };\n\n var str = function(key, holder) {\n var gap = '';\n var indent = ' ';\n var i = 0; // The loop counter.\n var k = ''; // The member key.\n var v = ''; // The member value.\n var length = 0;\n var mind = gap;\n var partial = [];\n var value = holder[key];\n\n // If the value has a toJSON method, call it to obtain a replacement value.\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n\n // What happens next depends on the value's type.\n switch (typeof value) {\n case 'string':\n return quote(value);\n\n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : 'null';\n\n case 'boolean':\n case 'null':\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n\n return String(value);\n\n case 'object':\n // If the type is 'object', we might be dealing with an object or an array or\n // null.\n // Due to a specification blunder in ECMAScript, typeof null is 'object',\n // so watch out for that case.\n if (!value) {\n return 'null';\n }\n\n // Make an array to hold the partial results of stringifying this object value.\n gap += indent;\n partial = [];\n\n // Is the value an array?\n if (toString.apply(value) === '[object Array]') {\n // The value is an array. Stringify every element. Use null as a placeholder\n // for non-JSON values.\n\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n\n // Join all of the elements together, separated with commas, and wrap them in\n // brackets.\n v = partial.length === 0 ? '[]' :\n gap ? '[\\n' + gap +\n partial.join(',\\n' + gap) + '\\n' +\n mind + ']' :\n '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n\n // Iterate through all of the keys in the object.\n for (k in value) {\n if (hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n\n // Join all of the member texts together, separated with commas,\n // and wrap them in braces.\n v = partial.length === 0 ? '{}' :\n gap ? '{' + partial.join(',') + '' +\n mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n };\n\n // Make a fake root object containing our value under the key of ''.\n // Return the result of stringifying the value.\n return str('', {\n '': value\n });\n };\n})();\n\n/**\n * From https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js\n * Slightly modified to throw a real Error rather than a POJO\n */\n_.JSONDecode = (function() {\n var at, // The index of the current character\n ch, // The current character\n escapee = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n 'b': '\\b',\n 'f': '\\f',\n 'n': '\\n',\n 'r': '\\r',\n 't': '\\t'\n },\n text,\n error = function(m) {\n var e = new SyntaxError(m);\n e.at = at;\n e.text = text;\n throw e;\n },\n next = function(c) {\n // If a c parameter is provided, verify that it matches the current character.\n if (c && c !== ch) {\n error('Expected \\'' + c + '\\' instead of \\'' + ch + '\\'');\n }\n // Get the next character. When there are no more characters,\n // return the empty string.\n ch = text.charAt(at);\n at += 1;\n return ch;\n },\n number = function() {\n // Parse a number value.\n var number,\n string = '';\n\n if (ch === '-') {\n string = '-';\n next('-');\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n if (ch === '.') {\n string += '.';\n while (next() && ch >= '0' && ch <= '9') {\n string += ch;\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch;\n next();\n if (ch === '-' || ch === '+') {\n string += ch;\n next();\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n }\n number = +string;\n if (!isFinite(number)) {\n error('Bad number');\n } else {\n return number;\n }\n },\n\n string = function() {\n // Parse a string value.\n var hex,\n i,\n string = '',\n uffff;\n // When parsing for string values, we must look for \" and \\ characters.\n if (ch === '\"') {\n while (next()) {\n if (ch === '\"') {\n next();\n return string;\n }\n if (ch === '\\\\') {\n next();\n if (ch === 'u') {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch];\n } else {\n break;\n }\n } else {\n string += ch;\n }\n }\n }\n error('Bad string');\n },\n white = function() {\n // Skip whitespace.\n while (ch && ch <= ' ') {\n next();\n }\n },\n word = function() {\n // true, false, or null.\n switch (ch) {\n case 't':\n next('t');\n next('r');\n next('u');\n next('e');\n return true;\n case 'f':\n next('f');\n next('a');\n next('l');\n next('s');\n next('e');\n return false;\n case 'n':\n next('n');\n next('u');\n next('l');\n next('l');\n return null;\n }\n error('Unexpected \"' + ch + '\"');\n },\n value, // Placeholder for the value function.\n array = function() {\n // Parse an array value.\n var array = [];\n\n if (ch === '[') {\n next('[');\n white();\n if (ch === ']') {\n next(']');\n return array; // empty array\n }\n while (ch) {\n array.push(value());\n white();\n if (ch === ']') {\n next(']');\n return array;\n }\n next(',');\n white();\n }\n }\n error('Bad array');\n },\n object = function() {\n // Parse an object value.\n var key,\n object = {};\n\n if (ch === '{') {\n next('{');\n white();\n if (ch === '}') {\n next('}');\n return object; // empty object\n }\n while (ch) {\n key = string();\n white();\n next(':');\n if (Object.hasOwnProperty.call(object, key)) {\n error('Duplicate key \"' + key + '\"');\n }\n object[key] = value();\n white();\n if (ch === '}') {\n next('}');\n return object;\n }\n next(',');\n white();\n }\n }\n error('Bad object');\n };\n\n value = function() {\n // Parse a JSON value. It could be an object, an array, a string,\n // a number, or a word.\n white();\n switch (ch) {\n case '{':\n return object();\n case '[':\n return array();\n case '\"':\n return string();\n case '-':\n return number();\n default:\n return ch >= '0' && ch <= '9' ? number() : word();\n }\n };\n\n // Return the json_parse function. It will have access to all of the\n // above functions and variables.\n return function(source) {\n var result;\n\n text = source;\n at = 0;\n ch = ' ';\n result = value();\n white();\n if (ch) {\n error('Syntax error');\n }\n\n return result;\n };\n})();\n\n_.base64Encode = function(data) {\n var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n enc = '',\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n data = _.utf8Encode(data);\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1 << 16 | o2 << 8 | o3;\n\n h1 = bits >> 18 & 0x3f;\n h2 = bits >> 12 & 0x3f;\n h3 = bits >> 6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '==';\n break;\n case 2:\n enc = enc.slice(0, -1) + '=';\n break;\n }\n\n return enc;\n};\n\n_.utf8Encode = function(string) {\n string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n var utftext = '',\n start,\n end;\n var stringl = 0,\n n;\n\n start = end = 0;\n stringl = string.length;\n\n for (n = 0; n < stringl; n++) {\n var c1 = string.charCodeAt(n);\n var enc = null;\n\n if (c1 < 128) {\n end++;\n } else if ((c1 > 127) && (c1 < 2048)) {\n enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128);\n } else {\n enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128);\n }\n if (enc !== null) {\n if (end > start) {\n utftext += string.substring(start, end);\n }\n utftext += enc;\n start = end = n + 1;\n }\n }\n\n if (end > start) {\n utftext += string.substring(start, string.length);\n }\n\n return utftext;\n};\n\n_.UUID = (function() {\n\n // Time-based entropy\n var T = function() {\n var time = 1 * new Date(); // cross-browser version of Date.now()\n var ticks;\n if (window$1.performance && window$1.performance.now) {\n ticks = window$1.performance.now();\n } else {\n // fall back to busy loop\n ticks = 0;\n\n // this while loop figures how many browser ticks go by\n // before 1*new Date() returns a new number, ie the amount\n // of ticks that go by per millisecond\n while (time == 1 * new Date()) {\n ticks++;\n }\n }\n return time.toString(16) + Math.floor(ticks).toString(16);\n };\n\n // Math.Random entropy\n var R = function() {\n return Math.random().toString(16).replace('.', '');\n };\n\n // User agent entropy\n // This function takes the user agent string, and then xors\n // together each sequence of 8 bytes. This produces a final\n // sequence of 8 bytes which it returns as hex.\n var UA = function() {\n var ua = userAgent,\n i, ch, buffer = [],\n ret = 0;\n\n function xor(result, byte_array) {\n var j, tmp = 0;\n for (j = 0; j < byte_array.length; j++) {\n tmp |= (buffer[j] << j * 8);\n }\n return result ^ tmp;\n }\n\n for (i = 0; i < ua.length; i++) {\n ch = ua.charCodeAt(i);\n buffer.unshift(ch & 0xFF);\n if (buffer.length >= 4) {\n ret = xor(ret, buffer);\n buffer = [];\n }\n }\n\n if (buffer.length > 0) {\n ret = xor(ret, buffer);\n }\n\n return ret.toString(16);\n };\n\n return function() {\n var se = (screen.height * screen.width).toString(16);\n return (T() + '-' + R() + '-' + UA() + '-' + se + '-' + T());\n };\n})();\n\n// _.isBlockedUA()\n// This is to block various web spiders from executing our JS and\n// sending false tracking data\nvar BLOCKED_UA_STRS = [\n 'ahrefsbot',\n 'ahrefssiteaudit',\n 'baiduspider',\n 'bingbot',\n 'bingpreview',\n 'chrome-lighthouse',\n 'facebookexternal',\n 'petalbot',\n 'pinterest',\n 'screaming frog',\n 'yahoo! slurp',\n 'yandexbot',\n\n // a whole bunch of goog-specific crawlers\n // https://developers.google.com/search/docs/advanced/crawling/overview-google-crawlers\n 'adsbot-google',\n 'apis-google',\n 'duplexweb-google',\n 'feedfetcher-google',\n 'google favicon',\n 'google web preview',\n 'google-read-aloud',\n 'googlebot',\n 'googleweblight',\n 'mediapartners-google',\n 'storebot-google'\n];\n_.isBlockedUA = function(ua) {\n var i;\n ua = ua.toLowerCase();\n for (i = 0; i < BLOCKED_UA_STRS.length; i++) {\n if (ua.indexOf(BLOCKED_UA_STRS[i]) !== -1) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @param {Object=} formdata\n * @param {string=} arg_separator\n */\n_.HTTPBuildQuery = function(formdata, arg_separator) {\n var use_val, use_key, tmp_arr = [];\n\n if (_.isUndefined(arg_separator)) {\n arg_separator = '&';\n }\n\n _.each(formdata, function(val, key) {\n use_val = encodeURIComponent(val.toString());\n use_key = encodeURIComponent(key);\n tmp_arr[tmp_arr.length] = use_key + '=' + use_val;\n });\n\n return tmp_arr.join(arg_separator);\n};\n\n_.getQueryParam = function(url, param) {\n // Expects a raw URL\n\n param = param.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n var regexS = '[\\\\?&]' + param + '=([^&#]*)',\n regex = new RegExp(regexS),\n results = regex.exec(url);\n if (results === null || (results && typeof(results[1]) !== 'string' && results[1].length)) {\n return '';\n } else {\n var result = results[1];\n try {\n result = decodeURIComponent(result);\n } catch(err) {\n console.error('Skipping decoding for malformed query param: ' + result);\n }\n return result.replace(/\\+/g, ' ');\n }\n};\n\n\n// _.cookie\n// Methods partially borrowed from quirksmode.org/js/cookies.html\n_.cookie = {\n get: function(name) {\n var nameEQ = name + '=';\n var ca = document$1.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return decodeURIComponent(c.substring(nameEQ.length, c.length));\n }\n }\n return null;\n },\n\n parse: function(name) {\n var cookie;\n try {\n cookie = _.JSONDecode(_.cookie.get(name)) || {};\n } catch (err) {\n // noop\n }\n return cookie;\n },\n\n set_seconds: function(name, value, seconds, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '',\n expires = '',\n secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document$1.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (seconds) {\n var date = new Date();\n date.setTime(date.getTime() + (seconds * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n document$1.cookie = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n },\n\n set: function(name, value, days, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '', expires = '', secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document$1.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n var new_cookie_val = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n document$1.cookie = new_cookie_val;\n return new_cookie_val;\n },\n\n remove: function(name, is_cross_subdomain, domain_override) {\n _.cookie.set(name, '', -1, is_cross_subdomain, false, false, domain_override);\n }\n};\n\nvar _localStorageSupported = null;\nvar localStorageSupported = function(storage, forceCheck) {\n if (_localStorageSupported !== null && !forceCheck) {\n return _localStorageSupported;\n }\n\n var supported = true;\n try {\n storage = storage || window.localStorage;\n var key = '__mplss_' + cheap_guid(8),\n val = 'xyz';\n storage.setItem(key, val);\n if (storage.getItem(key) !== val) {\n supported = false;\n }\n storage.removeItem(key);\n } catch (err) {\n supported = false;\n }\n\n _localStorageSupported = supported;\n return supported;\n};\n\n// _.localStorage\n_.localStorage = {\n is_supported: function(force_check) {\n var supported = localStorageSupported(null, force_check);\n if (!supported) {\n console.error('localStorage unsupported; falling back to cookie store');\n }\n return supported;\n },\n\n error: function(msg) {\n console.error('localStorage error: ' + msg);\n },\n\n get: function(name) {\n try {\n return window.localStorage.getItem(name);\n } catch (err) {\n _.localStorage.error(err);\n }\n return null;\n },\n\n parse: function(name) {\n try {\n return _.JSONDecode(_.localStorage.get(name)) || {};\n } catch (err) {\n // noop\n }\n return null;\n },\n\n set: function(name, value) {\n try {\n window.localStorage.setItem(name, value);\n } catch (err) {\n _.localStorage.error(err);\n }\n },\n\n remove: function(name) {\n try {\n window.localStorage.removeItem(name);\n } catch (err) {\n _.localStorage.error(err);\n }\n }\n};\n\n_.register_event = (function() {\n // written by Dean Edwards, 2005\n // with input from Tino Zijdel - crisp@xs4all.nl\n // with input from Carl Sverre - mail@carlsverre.com\n // with input from Mixpanel\n // http://dean.edwards.name/weblog/2005/10/add-event/\n // https://gist.github.com/1930440\n\n /**\n * @param {Object} element\n * @param {string} type\n * @param {function(...*)} handler\n * @param {boolean=} oldSchool\n * @param {boolean=} useCapture\n */\n var register_event = function(element, type, handler, oldSchool, useCapture) {\n if (!element) {\n console.error('No valid element provided to register_event');\n return;\n }\n\n if (element.addEventListener && !oldSchool) {\n element.addEventListener(type, handler, !!useCapture);\n } else {\n var ontype = 'on' + type;\n var old_handler = element[ontype]; // can be undefined\n element[ontype] = makeHandler(element, handler, old_handler);\n }\n };\n\n function makeHandler(element, new_handler, old_handlers) {\n var handler = function(event) {\n event = event || fixEvent(window.event);\n\n // this basically happens in firefox whenever another script\n // overwrites the onload callback and doesn't pass the event\n // object to previously defined callbacks. All the browsers\n // that don't define window.event implement addEventListener\n // so the dom_loaded handler will still be fired as usual.\n if (!event) {\n return undefined;\n }\n\n var ret = true;\n var old_result, new_result;\n\n if (_.isFunction(old_handlers)) {\n old_result = old_handlers(event);\n }\n new_result = new_handler.call(element, event);\n\n if ((false === old_result) || (false === new_result)) {\n ret = false;\n }\n\n return ret;\n };\n\n return handler;\n }\n\n function fixEvent(event) {\n if (event) {\n event.preventDefault = fixEvent.preventDefault;\n event.stopPropagation = fixEvent.stopPropagation;\n }\n return event;\n }\n fixEvent.preventDefault = function() {\n this.returnValue = false;\n };\n fixEvent.stopPropagation = function() {\n this.cancelBubble = true;\n };\n\n return register_event;\n})();\n\n\nvar TOKEN_MATCH_REGEX = new RegExp('^(\\\\w*)\\\\[(\\\\w+)([=~\\\\|\\\\^\\\\$\\\\*]?)=?\"?([^\\\\]\"]*)\"?\\\\]$');\n\n_.dom_query = (function() {\n /* document.getElementsBySelector(selector)\n - returns an array of element objects from the current document\n matching the CSS selector. Selectors can contain element names,\n class names and ids and can be nested. For example:\n\n elements = document.getElementsBySelector('div#main p a.external')\n\n Will return an array of all 'a' elements with 'external' in their\n class attribute that are contained inside 'p' elements that are\n contained inside the 'div' element which has id=\"main\"\n\n New in version 0.4: Support for CSS2 and CSS3 attribute selectors:\n See http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\n Version 0.4 - Simon Willison, March 25th 2003\n -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows\n -- Opera 7 fails\n\n Version 0.5 - Carl Sverre, Jan 7th 2013\n -- Now uses jQuery-esque `hasClass` for testing class name\n equality. This fixes a bug related to '-' characters being\n considered not part of a 'word' in regex.\n */\n\n function getAllChildren(e) {\n // Returns all children of element. Workaround required for IE5/Windows. Ugh.\n return e.all ? e.all : e.getElementsByTagName('*');\n }\n\n var bad_whitespace = /[\\t\\r\\n]/g;\n\n function hasClass(elem, selector) {\n var className = ' ' + selector + ' ';\n return ((' ' + elem.className + ' ').replace(bad_whitespace, ' ').indexOf(className) >= 0);\n }\n\n function getElementsBySelector(selector) {\n // Attempt to fail gracefully in lesser browsers\n if (!document$1.getElementsByTagName) {\n return [];\n }\n // Split selector in to tokens\n var tokens = selector.split(' ');\n var token, bits, tagName, found, foundCount, i, j, k, elements, currentContextIndex;\n var currentContext = [document$1];\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i].replace(/^\\s+/, '').replace(/\\s+$/, '');\n if (token.indexOf('#') > -1) {\n // Token is an ID selector\n bits = token.split('#');\n tagName = bits[0];\n var id = bits[1];\n var element = document$1.getElementById(id);\n if (!element || (tagName && element.nodeName.toLowerCase() != tagName)) {\n // element not found or tag with that ID not found, return false\n return [];\n }\n // Set currentContext to contain just this element\n currentContext = [element];\n continue; // Skip to next token\n }\n if (token.indexOf('.') > -1) {\n // Token contains a class selector\n bits = token.split('.');\n tagName = bits[0];\n var className = bits[1];\n if (!tagName) {\n tagName = '*';\n }\n // Get elements matching tag, filter them for class selector\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (found[j].className &&\n _.isString(found[j].className) && // some SVG elements have classNames which are not strings\n hasClass(found[j], className)\n ) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n continue; // Skip to next token\n }\n // Code to deal with attribute selectors\n var token_match = token.match(TOKEN_MATCH_REGEX);\n if (token_match) {\n tagName = token_match[1];\n var attrName = token_match[2];\n var attrOperator = token_match[3];\n var attrValue = token_match[4];\n if (!tagName) {\n tagName = '*';\n }\n // Grab all of the tagName elements within current context\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n var checkFunction; // This function will be used to filter the elements\n switch (attrOperator) {\n case '=': // Equality\n checkFunction = function(e) {\n return (e.getAttribute(attrName) == attrValue);\n };\n break;\n case '~': // Match one of space seperated words\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('\\\\b' + attrValue + '\\\\b')));\n };\n break;\n case '|': // Match start with value followed by optional hyphen\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('^' + attrValue + '-?')));\n };\n break;\n case '^': // Match starts with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) === 0);\n };\n break;\n case '$': // Match ends with value - fails with \"Warning\" in Opera 7\n checkFunction = function(e) {\n return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length);\n };\n break;\n case '*': // Match ends with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) > -1);\n };\n break;\n default:\n // Just test for existence of attribute\n checkFunction = function(e) {\n return e.getAttribute(attrName);\n };\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (checkFunction(found[j])) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);\n continue; // Skip to next token\n }\n // If we get here, token is JUST an element (not a class or ID selector)\n tagName = token;\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n elements = currentContext[j].getElementsByTagName(tagName);\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = found;\n }\n return currentContext;\n }\n\n return function(query) {\n if (_.isElement(query)) {\n return [query];\n } else if (_.isObject(query) && !_.isUndefined(query.length)) {\n return query;\n } else {\n return getElementsBySelector.call(this, query);\n }\n };\n})();\n\nvar CAMPAIGN_KEYWORDS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'];\nvar CLICK_IDS = ['dclid', 'fbclid', 'gclid', 'ko_click_id', 'li_fat_id', 'msclkid', 'ttclid', 'twclid', 'wbraid'];\n\n_.info = {\n campaignParams: function(default_value) {\n var kw = '',\n params = {};\n _.each(CAMPAIGN_KEYWORDS, function(kwkey) {\n kw = _.getQueryParam(document$1.URL, kwkey);\n if (kw.length) {\n params[kwkey] = kw;\n } else if (default_value !== undefined) {\n params[kwkey] = default_value;\n }\n });\n\n return params;\n },\n\n clickParams: function() {\n var id = '',\n params = {};\n _.each(CLICK_IDS, function(idkey) {\n id = _.getQueryParam(document$1.URL, idkey);\n if (id.length) {\n params[idkey] = id;\n }\n });\n\n return params;\n },\n\n marketingParams: function() {\n return _.extend(_.info.campaignParams(), _.info.clickParams());\n },\n\n searchEngine: function(referrer) {\n if (referrer.search('https?://(.*)google.([^/?]*)') === 0) {\n return 'google';\n } else if (referrer.search('https?://(.*)bing.com') === 0) {\n return 'bing';\n } else if (referrer.search('https?://(.*)yahoo.com') === 0) {\n return 'yahoo';\n } else if (referrer.search('https?://(.*)duckduckgo.com') === 0) {\n return 'duckduckgo';\n } else {\n return null;\n }\n },\n\n searchInfo: function(referrer) {\n var search = _.info.searchEngine(referrer),\n param = (search != 'yahoo') ? 'q' : 'p',\n ret = {};\n\n if (search !== null) {\n ret['$search_engine'] = search;\n\n var keyword = _.getQueryParam(referrer, param);\n if (keyword.length) {\n ret['mp_keyword'] = keyword;\n }\n }\n\n return ret;\n },\n\n /**\n * This function detects which browser is running this script.\n * The order of the checks are important since many user agents\n * include key words used in later checks.\n */\n browser: function(user_agent, vendor, opera) {\n vendor = vendor || ''; // vendor is undefined for at least IE9\n if (opera || _.includes(user_agent, ' OPR/')) {\n if (_.includes(user_agent, 'Mini')) {\n return 'Opera Mini';\n }\n return 'Opera';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (_.includes(user_agent, 'IEMobile') || _.includes(user_agent, 'WPDesktop')) {\n return 'Internet Explorer Mobile';\n } else if (_.includes(user_agent, 'SamsungBrowser/')) {\n // https://developer.samsung.com/internet/user-agent-string-format\n return 'Samsung Internet';\n } else if (_.includes(user_agent, 'Edge') || _.includes(user_agent, 'Edg/')) {\n return 'Microsoft Edge';\n } else if (_.includes(user_agent, 'FBIOS')) {\n return 'Facebook Mobile';\n } else if (_.includes(user_agent, 'Chrome')) {\n return 'Chrome';\n } else if (_.includes(user_agent, 'CriOS')) {\n return 'Chrome iOS';\n } else if (_.includes(user_agent, 'UCWEB') || _.includes(user_agent, 'UCBrowser')) {\n return 'UC Browser';\n } else if (_.includes(user_agent, 'FxiOS')) {\n return 'Firefox iOS';\n } else if (_.includes(vendor, 'Apple')) {\n if (_.includes(user_agent, 'Mobile')) {\n return 'Mobile Safari';\n }\n return 'Safari';\n } else if (_.includes(user_agent, 'Android')) {\n return 'Android Mobile';\n } else if (_.includes(user_agent, 'Konqueror')) {\n return 'Konqueror';\n } else if (_.includes(user_agent, 'Firefox')) {\n return 'Firefox';\n } else if (_.includes(user_agent, 'MSIE') || _.includes(user_agent, 'Trident/')) {\n return 'Internet Explorer';\n } else if (_.includes(user_agent, 'Gecko')) {\n return 'Mozilla';\n } else {\n return '';\n }\n },\n\n /**\n * This function detects which browser version is running this script,\n * parsing major and minor version (e.g., 42.1). User agent strings from:\n * http://www.useragentstring.com/pages/useragentstring.php\n */\n browserVersion: function(userAgent, vendor, opera) {\n var browser = _.info.browser(userAgent, vendor, opera);\n var versionRegexs = {\n 'Internet Explorer Mobile': /rv:(\\d+(\\.\\d+)?)/,\n 'Microsoft Edge': /Edge?\\/(\\d+(\\.\\d+)?)/,\n 'Chrome': /Chrome\\/(\\d+(\\.\\d+)?)/,\n 'Chrome iOS': /CriOS\\/(\\d+(\\.\\d+)?)/,\n 'UC Browser' : /(UCBrowser|UCWEB)\\/(\\d+(\\.\\d+)?)/,\n 'Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Mobile Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Opera': /(Opera|OPR)\\/(\\d+(\\.\\d+)?)/,\n 'Firefox': /Firefox\\/(\\d+(\\.\\d+)?)/,\n 'Firefox iOS': /FxiOS\\/(\\d+(\\.\\d+)?)/,\n 'Konqueror': /Konqueror:(\\d+(\\.\\d+)?)/,\n 'BlackBerry': /BlackBerry (\\d+(\\.\\d+)?)/,\n 'Android Mobile': /android\\s(\\d+(\\.\\d+)?)/,\n 'Samsung Internet': /SamsungBrowser\\/(\\d+(\\.\\d+)?)/,\n 'Internet Explorer': /(rv:|MSIE )(\\d+(\\.\\d+)?)/,\n 'Mozilla': /rv:(\\d+(\\.\\d+)?)/\n };\n var regex = versionRegexs[browser];\n if (regex === undefined) {\n return null;\n }\n var matches = userAgent.match(regex);\n if (!matches) {\n return null;\n }\n return parseFloat(matches[matches.length - 2]);\n },\n\n os: function() {\n var a = userAgent;\n if (/Windows/i.test(a)) {\n if (/Phone/.test(a) || /WPDesktop/.test(a)) {\n return 'Windows Phone';\n }\n return 'Windows';\n } else if (/(iPhone|iPad|iPod)/.test(a)) {\n return 'iOS';\n } else if (/Android/.test(a)) {\n return 'Android';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(a)) {\n return 'BlackBerry';\n } else if (/Mac/i.test(a)) {\n return 'Mac OS X';\n } else if (/Linux/.test(a)) {\n return 'Linux';\n } else if (/CrOS/.test(a)) {\n return 'Chrome OS';\n } else {\n return '';\n }\n },\n\n device: function(user_agent) {\n if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return 'Windows Phone';\n } else if (/iPad/.test(user_agent)) {\n return 'iPad';\n } else if (/iPod/.test(user_agent)) {\n return 'iPod Touch';\n } else if (/iPhone/.test(user_agent)) {\n return 'iPhone';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (/Android/.test(user_agent)) {\n return 'Android';\n } else {\n return '';\n }\n },\n\n referringDomain: function(referrer) {\n var split = referrer.split('/');\n if (split.length >= 3) {\n return split[2];\n }\n return '';\n },\n\n currentUrl: function() {\n return window$1.location.href;\n },\n\n properties: function(extra_props) {\n if (typeof extra_props !== 'object') {\n extra_props = {};\n }\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera),\n '$referrer': document$1.referrer,\n '$referring_domain': _.info.referringDomain(document$1.referrer),\n '$device': _.info.device(userAgent)\n }), {\n '$current_url': _.info.currentUrl(),\n '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera),\n '$screen_height': screen.height,\n '$screen_width': screen.width,\n 'mp_lib': 'web',\n '$lib_version': Config.LIB_VERSION,\n '$insert_id': cheap_guid(),\n 'time': _.timestamp() / 1000 // epoch time in seconds\n }, _.strip_empty_properties(extra_props));\n },\n\n people_properties: function() {\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera)\n }), {\n '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera)\n });\n },\n\n mpPageViewProperties: function() {\n return _.strip_empty_properties({\n 'current_page_title': document$1.title,\n 'current_domain': window$1.location.hostname,\n 'current_url_path': window$1.location.pathname,\n 'current_url_protocol': window$1.location.protocol,\n 'current_url_search': window$1.location.search\n });\n }\n};\n\nvar cheap_guid = function(maxlen) {\n var guid = Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10);\n return maxlen ? guid.substring(0, maxlen) : guid;\n};\n\n// naive way to extract domain name (example.com) from full hostname (my.sub.example.com)\nvar SIMPLE_DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]*\\.[a-z]+$/i;\n// this next one attempts to account for some ccSLDs, e.g. extracting oxford.ac.uk from www.oxford.ac.uk\nvar DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]+\\.[a-z.]{2,6}$/i;\n/**\n * Attempts to extract main domain name from full hostname, using a few blunt heuristics. For\n * common TLDs like .com/.org that always have a simple SLD.TLD structure (example.com), we\n * simply extract the last two .-separated parts of the hostname (SIMPLE_DOMAIN_MATCH_REGEX).\n * For others, we attempt to account for short ccSLD+TLD combos (.ac.uk) with the legacy\n * DOMAIN_MATCH_REGEX (kept to maintain backwards compatibility with existing Mixpanel\n * integrations). The only _reliable_ way to extract domain from hostname is with an up-to-date\n * list like at https://publicsuffix.org/ so for cases that this helper fails at, the SDK\n * offers the 'cookie_domain' config option to set it explicitly.\n * @example\n * extract_domain('my.sub.example.com')\n * // 'example.com'\n */\nvar extract_domain = function(hostname) {\n var domain_regex = DOMAIN_MATCH_REGEX;\n var parts = hostname.split('.');\n var tld = parts[parts.length - 1];\n if (tld.length > 4 || tld === 'com' || tld === 'org') {\n domain_regex = SIMPLE_DOMAIN_MATCH_REGEX;\n }\n var matches = hostname.match(domain_regex);\n return matches ? matches[0] : '';\n};\n\nvar JSONStringify = null;\nvar JSONParse = null;\nif (typeof JSON !== 'undefined') {\n JSONStringify = JSON.stringify;\n JSONParse = JSON.parse;\n}\nJSONStringify = JSONStringify || _.JSONEncode;\nJSONParse = JSONParse || _.JSONDecode;\n\n// EXPORTS (for closure compiler)\n_['toArray'] = _.toArray;\n_['isObject'] = _.isObject;\n_['JSONEncode'] = _.JSONEncode;\n_['JSONDecode'] = _.JSONDecode;\n_['isBlockedUA'] = _.isBlockedUA;\n_['isEmptyObject'] = _.isEmptyObject;\n_['info'] = _.info;\n_['info']['device'] = _.info.device;\n_['info']['browser'] = _.info.browser;\n_['info']['browserVersion'] = _.info.browserVersion;\n_['info']['properties'] = _.info.properties;\n\n/**\n * DomTracker Object\n * @constructor\n */\nvar DomTracker = function() {};\n\n\n// interface\nDomTracker.prototype.create_properties = function() {};\nDomTracker.prototype.event_handler = function() {};\nDomTracker.prototype.after_track_handler = function() {};\n\nDomTracker.prototype.init = function(mixpanel_instance) {\n this.mp = mixpanel_instance;\n return this;\n};\n\n/**\n * @param {Object|string} query\n * @param {string} event_name\n * @param {Object=} properties\n * @param {function=} user_callback\n */\nDomTracker.prototype.track = function(query, event_name, properties, user_callback) {\n var that = this;\n var elements = _.dom_query(query);\n\n if (elements.length === 0) {\n console.error('The DOM query (' + query + ') returned 0 elements');\n return;\n }\n\n _.each(elements, function(element) {\n _.register_event(element, this.override_event, function(e) {\n var options = {};\n var props = that.create_properties(properties, this);\n var timeout = that.mp.get_config('track_links_timeout');\n\n that.event_handler(e, this, options);\n\n // in case the mixpanel servers don't get back to us in time\n window.setTimeout(that.track_callback(user_callback, props, options, true), timeout);\n\n // fire the tracking event\n that.mp.track(event_name, props, that.track_callback(user_callback, props, options));\n });\n }, this);\n\n return true;\n};\n\n/**\n * @param {function} user_callback\n * @param {Object} props\n * @param {boolean=} timeout_occured\n */\nDomTracker.prototype.track_callback = function(user_callback, props, options, timeout_occured) {\n timeout_occured = timeout_occured || false;\n var that = this;\n\n return function() {\n // options is referenced from both callbacks, so we can have\n // a 'lock' of sorts to ensure only one fires\n if (options.callback_fired) { return; }\n options.callback_fired = true;\n\n if (user_callback && user_callback(timeout_occured, props) === false) {\n // user can prevent the default functionality by\n // returning false from their callback\n return;\n }\n\n that.after_track_handler(props, options, timeout_occured);\n };\n};\n\nDomTracker.prototype.create_properties = function(properties, element) {\n var props;\n\n if (typeof(properties) === 'function') {\n props = properties(element);\n } else {\n props = _.extend({}, properties);\n }\n\n return props;\n};\n\n/**\n * LinkTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar LinkTracker = function() {\n this.override_event = 'click';\n};\n_.inherit(LinkTracker, DomTracker);\n\nLinkTracker.prototype.create_properties = function(properties, element) {\n var props = LinkTracker.superclass.create_properties.apply(this, arguments);\n\n if (element.href) { props['url'] = element.href; }\n\n return props;\n};\n\nLinkTracker.prototype.event_handler = function(evt, element, options) {\n options.new_tab = (\n evt.which === 2 ||\n evt.metaKey ||\n evt.ctrlKey ||\n element.target === '_blank'\n );\n options.href = element.href;\n\n if (!options.new_tab) {\n evt.preventDefault();\n }\n};\n\nLinkTracker.prototype.after_track_handler = function(props, options) {\n if (options.new_tab) { return; }\n\n setTimeout(function() {\n window.location = options.href;\n }, 0);\n};\n\n/**\n * FormTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar FormTracker = function() {\n this.override_event = 'submit';\n};\n_.inherit(FormTracker, DomTracker);\n\nFormTracker.prototype.event_handler = function(evt, element, options) {\n options.element = element;\n evt.preventDefault();\n};\n\nFormTracker.prototype.after_track_handler = function(props, options) {\n setTimeout(function() {\n options.element.submit();\n }, 0);\n};\n\n// eslint-disable-line camelcase\n\nvar logger$2 = console_with_prefix('lock');\n\n/**\n * SharedLock: a mutex built on HTML5 localStorage, to ensure that only one browser\n * window/tab at a time will be able to access shared resources.\n *\n * Based on the Alur and Taubenfeld fast lock\n * (http://www.cs.rochester.edu/research/synchronization/pseudocode/fastlock.html)\n * with an added timeout to ensure there will be eventual progress in the event\n * that a window is closed in the middle of the callback.\n *\n * Implementation based on the original version by David Wolever (https://github.com/wolever)\n * at https://gist.github.com/wolever/5fd7573d1ef6166e8f8c4af286a69432.\n *\n * @example\n * const myLock = new SharedLock('some-key');\n * myLock.withLock(function() {\n * console.log('I hold the mutex!');\n * });\n *\n * @constructor\n */\nvar SharedLock = function(key, options) {\n options = options || {};\n\n this.storageKey = key;\n this.storage = options.storage || window.localStorage;\n this.pollIntervalMS = options.pollIntervalMS || 100;\n this.timeoutMS = options.timeoutMS || 2000;\n};\n\n// pass in a specific pid to test contention scenarios; otherwise\n// it is chosen randomly for each acquisition attempt\nSharedLock.prototype.withLock = function(lockedCB, errorCB, pid) {\n if (!pid && typeof errorCB !== 'function') {\n pid = errorCB;\n errorCB = null;\n }\n\n var i = pid || (new Date().getTime() + '|' + Math.random());\n var startTime = new Date().getTime();\n\n var key = this.storageKey;\n var pollIntervalMS = this.pollIntervalMS;\n var timeoutMS = this.timeoutMS;\n var storage = this.storage;\n\n var keyX = key + ':X';\n var keyY = key + ':Y';\n var keyZ = key + ':Z';\n\n var reportError = function(err) {\n errorCB && errorCB(err);\n };\n\n var delay = function(cb) {\n if (new Date().getTime() - startTime > timeoutMS) {\n logger$2.error('Timeout waiting for mutex on ' + key + '; clearing lock. [' + i + ']');\n storage.removeItem(keyZ);\n storage.removeItem(keyY);\n loop();\n return;\n }\n setTimeout(function() {\n try {\n cb();\n } catch(err) {\n reportError(err);\n }\n }, pollIntervalMS * (Math.random() + 0.1));\n };\n\n var waitFor = function(predicate, cb) {\n if (predicate()) {\n cb();\n } else {\n delay(function() {\n waitFor(predicate, cb);\n });\n }\n };\n\n var getSetY = function() {\n var valY = storage.getItem(keyY);\n if (valY && valY !== i) { // if Y == i then this process already has the lock (useful for test cases)\n return false;\n } else {\n storage.setItem(keyY, i);\n if (storage.getItem(keyY) === i) {\n return true;\n } else {\n if (!localStorageSupported(storage, true)) {\n throw new Error('localStorage support dropped while acquiring lock');\n }\n return false;\n }\n }\n };\n\n var loop = function() {\n storage.setItem(keyX, i);\n\n waitFor(getSetY, function() {\n if (storage.getItem(keyX) === i) {\n criticalSection();\n return;\n }\n\n delay(function() {\n if (storage.getItem(keyY) !== i) {\n loop();\n return;\n }\n waitFor(function() {\n return !storage.getItem(keyZ);\n }, criticalSection);\n });\n });\n };\n\n var criticalSection = function() {\n storage.setItem(keyZ, '1');\n try {\n lockedCB();\n } finally {\n storage.removeItem(keyZ);\n if (storage.getItem(keyY) === i) {\n storage.removeItem(keyY);\n }\n if (storage.getItem(keyX) === i) {\n storage.removeItem(keyX);\n }\n }\n };\n\n try {\n if (localStorageSupported(storage, true)) {\n loop();\n } else {\n throw new Error('localStorage support check failed');\n }\n } catch(err) {\n reportError(err);\n }\n};\n\n// eslint-disable-line camelcase\n\nvar logger$1 = console_with_prefix('batch');\n\n/**\n * RequestQueue: queue for batching API requests with localStorage backup for retries.\n * Maintains an in-memory queue which represents the source of truth for the current\n * page, but also writes all items out to a copy in the browser's localStorage, which\n * can be read on subsequent pageloads and retried. For batchability, all the request\n * items in the queue should be of the same type (events, people updates, group updates)\n * so they can be sent in a single request to the same API endpoint.\n *\n * LocalStorage keying and locking: In order for reloads and subsequent pageloads of\n * the same site to access the same persisted data, they must share the same localStorage\n * key (for instance based on project token and queue type). Therefore access to the\n * localStorage entry is guarded by an asynchronous mutex (SharedLock) to prevent\n * simultaneously open windows/tabs from overwriting each other's data (which would lead\n * to data loss in some situations).\n * @constructor\n */\nvar RequestQueue = function(storageKey, options) {\n options = options || {};\n this.storageKey = storageKey;\n this.storage = options.storage || window.localStorage;\n this.reportError = options.errorReporter || _.bind(logger$1.error, logger$1);\n this.lock = new SharedLock(storageKey, {storage: this.storage});\n\n this.pid = options.pid || null; // pass pid to test out storage lock contention scenarios\n\n this.memQueue = [];\n};\n\n/**\n * Add one item to queues (memory and localStorage). The queued entry includes\n * the given item along with an auto-generated ID and a \"flush-after\" timestamp.\n * It is expected that the item will be sent over the network and dequeued\n * before the flush-after time; if this doesn't happen it is considered orphaned\n * (e.g., the original tab where it was enqueued got closed before it could be\n * sent) and the item can be sent by any tab that finds it in localStorage.\n *\n * The final callback param is called with a param indicating success or\n * failure of the enqueue operation; it is asynchronous because the localStorage\n * lock is asynchronous.\n */\nRequestQueue.prototype.enqueue = function(item, flushInterval, cb) {\n var queueEntry = {\n 'id': cheap_guid(),\n 'flushAfter': new Date().getTime() + flushInterval * 2,\n 'payload': item\n };\n\n this.lock.withLock(_.bind(function lockAcquired() {\n var succeeded;\n try {\n var storedQueue = this.readFromStorage();\n storedQueue.push(queueEntry);\n succeeded = this.saveToStorage(storedQueue);\n if (succeeded) {\n // only add to in-memory queue when storage succeeds\n this.memQueue.push(queueEntry);\n }\n } catch(err) {\n this.reportError('Error enqueueing item', item);\n succeeded = false;\n }\n if (cb) {\n cb(succeeded);\n }\n }, this), _.bind(function lockFailure(err) {\n this.reportError('Error acquiring storage lock', err);\n if (cb) {\n cb(false);\n }\n }, this), this.pid);\n};\n\n/**\n * Read out the given number of queue entries. If this.memQueue\n * has fewer than batchSize items, then look for \"orphaned\" items\n * in the persisted queue (items where the 'flushAfter' time has\n * already passed).\n */\nRequestQueue.prototype.fillBatch = function(batchSize) {\n var batch = this.memQueue.slice(0, batchSize);\n if (batch.length < batchSize) {\n // don't need lock just to read events; localStorage is thread-safe\n // and the worst that could happen is a duplicate send of some\n // orphaned events, which will be deduplicated on the server side\n var storedQueue = this.readFromStorage();\n if (storedQueue.length) {\n // item IDs already in batch; don't duplicate out of storage\n var idsInBatch = {}; // poor man's Set\n _.each(batch, function(item) { idsInBatch[item['id']] = true; });\n\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n if (new Date().getTime() > item['flushAfter'] && !idsInBatch[item['id']]) {\n item.orphaned = true;\n batch.push(item);\n if (batch.length >= batchSize) {\n break;\n }\n }\n }\n }\n }\n return batch;\n};\n\n/**\n * Remove items with matching 'id' from array (immutably)\n * also remove any item without a valid id (e.g., malformed\n * storage entries).\n */\nvar filterOutIDsAndInvalid = function(items, idSet) {\n var filteredItems = [];\n _.each(items, function(item) {\n if (item['id'] && !idSet[item['id']]) {\n filteredItems.push(item);\n }\n });\n return filteredItems;\n};\n\n/**\n * Remove items with matching IDs from both in-memory queue\n * and persisted queue\n */\nRequestQueue.prototype.removeItemsByID = function(ids, cb) {\n var idSet = {}; // poor man's Set\n _.each(ids, function(id) { idSet[id] = true; });\n\n this.memQueue = filterOutIDsAndInvalid(this.memQueue, idSet);\n\n var removeFromStorage = _.bind(function() {\n var succeeded;\n try {\n var storedQueue = this.readFromStorage();\n storedQueue = filterOutIDsAndInvalid(storedQueue, idSet);\n succeeded = this.saveToStorage(storedQueue);\n\n // an extra check: did storage report success but somehow\n // the items are still there?\n if (succeeded) {\n storedQueue = this.readFromStorage();\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n if (item['id'] && !!idSet[item['id']]) {\n this.reportError('Item not removed from storage');\n return false;\n }\n }\n }\n } catch(err) {\n this.reportError('Error removing items', ids);\n succeeded = false;\n }\n return succeeded;\n }, this);\n\n this.lock.withLock(function lockAcquired() {\n var succeeded = removeFromStorage();\n if (cb) {\n cb(succeeded);\n }\n }, _.bind(function lockFailure(err) {\n var succeeded = false;\n this.reportError('Error acquiring storage lock', err);\n if (!localStorageSupported(this.storage, true)) {\n // Looks like localStorage writes have stopped working sometime after\n // initialization (probably full), and so nobody can acquire locks\n // anymore. Consider it temporarily safe to remove items without the\n // lock, since nobody's writing successfully anyway.\n succeeded = removeFromStorage();\n if (!succeeded) {\n // OK, we couldn't even write out the smaller queue. Try clearing it\n // entirely.\n try {\n this.storage.removeItem(this.storageKey);\n } catch(err) {\n this.reportError('Error clearing queue', err);\n }\n }\n }\n if (cb) {\n cb(succeeded);\n }\n }, this), this.pid);\n};\n\n// internal helper for RequestQueue.updatePayloads\nvar updatePayloads = function(existingItems, itemsToUpdate) {\n var newItems = [];\n _.each(existingItems, function(item) {\n var id = item['id'];\n if (id in itemsToUpdate) {\n var newPayload = itemsToUpdate[id];\n if (newPayload !== null) {\n item['payload'] = newPayload;\n newItems.push(item);\n }\n } else {\n // no update\n newItems.push(item);\n }\n });\n return newItems;\n};\n\n/**\n * Update payloads of given items in both in-memory queue and\n * persisted queue. Items set to null are removed from queues.\n */\nRequestQueue.prototype.updatePayloads = function(itemsToUpdate, cb) {\n this.memQueue = updatePayloads(this.memQueue, itemsToUpdate);\n this.lock.withLock(_.bind(function lockAcquired() {\n var succeeded;\n try {\n var storedQueue = this.readFromStorage();\n storedQueue = updatePayloads(storedQueue, itemsToUpdate);\n succeeded = this.saveToStorage(storedQueue);\n } catch(err) {\n this.reportError('Error updating items', itemsToUpdate);\n succeeded = false;\n }\n if (cb) {\n cb(succeeded);\n }\n }, this), _.bind(function lockFailure(err) {\n this.reportError('Error acquiring storage lock', err);\n if (cb) {\n cb(false);\n }\n }, this), this.pid);\n};\n\n/**\n * Read and parse items array from localStorage entry, handling\n * malformed/missing data if necessary.\n */\nRequestQueue.prototype.readFromStorage = function() {\n var storageEntry;\n try {\n storageEntry = this.storage.getItem(this.storageKey);\n if (storageEntry) {\n storageEntry = JSONParse(storageEntry);\n if (!_.isArray(storageEntry)) {\n this.reportError('Invalid storage entry:', storageEntry);\n storageEntry = null;\n }\n }\n } catch (err) {\n this.reportError('Error retrieving queue', err);\n storageEntry = null;\n }\n return storageEntry || [];\n};\n\n/**\n * Serialize the given items array to localStorage.\n */\nRequestQueue.prototype.saveToStorage = function(queue) {\n try {\n this.storage.setItem(this.storageKey, JSONStringify(queue));\n return true;\n } catch (err) {\n this.reportError('Error saving queue', err);\n return false;\n }\n};\n\n/**\n * Clear out queues (memory and localStorage).\n */\nRequestQueue.prototype.clear = function() {\n this.memQueue = [];\n this.storage.removeItem(this.storageKey);\n};\n\n// eslint-disable-line camelcase\n\n// maximum interval between request retries after exponential backoff\nvar MAX_RETRY_INTERVAL_MS = 10 * 60 * 1000; // 10 minutes\n\nvar logger = console_with_prefix('batch');\n\n/**\n * RequestBatcher: manages the queueing, flushing, retry etc of requests of one\n * type (events, people, groups).\n * Uses RequestQueue to manage the backing store.\n * @constructor\n */\nvar RequestBatcher = function(storageKey, options) {\n this.errorReporter = options.errorReporter;\n this.queue = new RequestQueue(storageKey, {\n errorReporter: _.bind(this.reportError, this),\n storage: options.storage\n });\n\n this.libConfig = options.libConfig;\n this.sendRequest = options.sendRequestFunc;\n this.beforeSendHook = options.beforeSendHook;\n this.stopAllBatching = options.stopAllBatchingFunc;\n\n // seed variable batch size + flush interval with configured values\n this.batchSize = this.libConfig['batch_size'];\n this.flushInterval = this.libConfig['batch_flush_interval_ms'];\n\n this.stopped = !this.libConfig['batch_autostart'];\n this.consecutiveRemovalFailures = 0;\n\n // extra client-side dedupe\n this.itemIdsSentSuccessfully = {};\n};\n\n/**\n * Add one item to queue.\n */\nRequestBatcher.prototype.enqueue = function(item, cb) {\n this.queue.enqueue(item, this.flushInterval, cb);\n};\n\n/**\n * Start flushing batches at the configured time interval. Must call\n * this method upon SDK init in order to send anything over the network.\n */\nRequestBatcher.prototype.start = function() {\n this.stopped = false;\n this.consecutiveRemovalFailures = 0;\n this.flush();\n};\n\n/**\n * Stop flushing batches. Can be restarted by calling start().\n */\nRequestBatcher.prototype.stop = function() {\n this.stopped = true;\n if (this.timeoutID) {\n clearTimeout(this.timeoutID);\n this.timeoutID = null;\n }\n};\n\n/**\n * Clear out queue.\n */\nRequestBatcher.prototype.clear = function() {\n this.queue.clear();\n};\n\n/**\n * Restore batch size configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetBatchSize = function() {\n this.batchSize = this.libConfig['batch_size'];\n};\n\n/**\n * Restore flush interval time configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetFlush = function() {\n this.scheduleFlush(this.libConfig['batch_flush_interval_ms']);\n};\n\n/**\n * Schedule the next flush in the given number of milliseconds.\n */\nRequestBatcher.prototype.scheduleFlush = function(flushMS) {\n this.flushInterval = flushMS;\n if (!this.stopped) { // don't schedule anymore if batching has been stopped\n this.timeoutID = setTimeout(_.bind(this.flush, this), this.flushInterval);\n }\n};\n\n/**\n * Flush one batch to network. Depending on success/failure modes, it will either\n * remove the batch from the queue or leave it in for retry, and schedule the next\n * flush. In cases of most network or API failures, it will back off exponentially\n * when retrying.\n * @param {Object} [options]\n * @param {boolean} [options.sendBeacon] - whether to send batch with\n * navigator.sendBeacon (only useful for sending batches before page unloads, as\n * sendBeacon offers no callbacks or status indications)\n */\nRequestBatcher.prototype.flush = function(options) {\n try {\n\n if (this.requestInProgress) {\n logger.log('Flush: Request already in progress');\n return;\n }\n\n options = options || {};\n var timeoutMS = this.libConfig['batch_request_timeout_ms'];\n var startTime = new Date().getTime();\n var currentBatchSize = this.batchSize;\n var batch = this.queue.fillBatch(currentBatchSize);\n var dataForRequest = [];\n var transformedItems = {};\n _.each(batch, function(item) {\n var payload = item['payload'];\n if (this.beforeSendHook && !item.orphaned) {\n payload = this.beforeSendHook(payload);\n }\n if (payload) {\n // mp_sent_by_lib_version prop captures which lib version actually\n // sends each event (regardless of which version originally queued\n // it for sending)\n if (payload['event'] && payload['properties']) {\n payload['properties'] = _.extend(\n {},\n payload['properties'],\n {'mp_sent_by_lib_version': Config.LIB_VERSION}\n );\n }\n var addPayload = true;\n var itemId = item['id'];\n if (itemId) {\n if ((this.itemIdsSentSuccessfully[itemId] || 0) > 5) {\n this.reportError('[dupe] item ID sent too many times, not sending', {\n item: item,\n batchSize: batch.length,\n timesSent: this.itemIdsSentSuccessfully[itemId]\n });\n addPayload = false;\n }\n } else {\n this.reportError('[dupe] found item with no ID', {item: item});\n }\n\n if (addPayload) {\n dataForRequest.push(payload);\n }\n }\n transformedItems[item['id']] = payload;\n }, this);\n if (dataForRequest.length < 1) {\n this.resetFlush();\n return; // nothing to do\n }\n\n this.requestInProgress = true;\n\n var batchSendCallback = _.bind(function(res) {\n this.requestInProgress = false;\n\n try {\n\n // handle API response in a try-catch to make sure we can reset the\n // flush operation if something goes wrong\n\n var removeItemsFromQueue = false;\n if (options.unloading) {\n // update persisted data to include hook transformations\n this.queue.updatePayloads(transformedItems);\n } else if (\n _.isObject(res) &&\n res.error === 'timeout' &&\n new Date().getTime() - startTime >= timeoutMS\n ) {\n this.reportError('Network timeout; retrying');\n this.flush();\n } else if (\n _.isObject(res) &&\n res.xhr_req &&\n (res.xhr_req['status'] >= 500 || res.xhr_req['status'] === 429 || res.error === 'timeout')\n ) {\n // network or API error, or 429 Too Many Requests, retry\n var retryMS = this.flushInterval * 2;\n var headers = res.xhr_req['responseHeaders'];\n if (headers) {\n var retryAfter = headers['Retry-After'];\n if (retryAfter) {\n retryMS = (parseInt(retryAfter, 10) * 1000) || retryMS;\n }\n }\n retryMS = Math.min(MAX_RETRY_INTERVAL_MS, retryMS);\n this.reportError('Error; retry in ' + retryMS + ' ms');\n this.scheduleFlush(retryMS);\n } else if (_.isObject(res) && res.xhr_req && res.xhr_req['status'] === 413) {\n // 413 Payload Too Large\n if (batch.length > 1) {\n var halvedBatchSize = Math.max(1, Math.floor(currentBatchSize / 2));\n this.batchSize = Math.min(this.batchSize, halvedBatchSize, batch.length - 1);\n this.reportError('413 response; reducing batch size to ' + this.batchSize);\n this.resetFlush();\n } else {\n this.reportError('Single-event request too large; dropping', batch);\n this.resetBatchSize();\n removeItemsFromQueue = true;\n }\n } else {\n // successful network request+response; remove each item in batch from queue\n // (even if it was e.g. a 400, in which case retrying won't help)\n removeItemsFromQueue = true;\n }\n\n if (removeItemsFromQueue) {\n this.queue.removeItemsByID(\n _.map(batch, function(item) { return item['id']; }),\n _.bind(function(succeeded) {\n if (succeeded) {\n this.consecutiveRemovalFailures = 0;\n this.flush(); // handle next batch if the queue isn't empty\n } else {\n this.reportError('Failed to remove items from queue');\n if (++this.consecutiveRemovalFailures > 5) {\n this.reportError('Too many queue failures; disabling batching system.');\n this.stopAllBatching();\n } else {\n this.resetFlush();\n }\n }\n }, this)\n );\n\n // client-side dedupe\n _.each(batch, _.bind(function(item) {\n var itemId = item['id'];\n if (itemId) {\n this.itemIdsSentSuccessfully[itemId] = this.itemIdsSentSuccessfully[itemId] || 0;\n this.itemIdsSentSuccessfully[itemId]++;\n if (this.itemIdsSentSuccessfully[itemId] > 5) {\n this.reportError('[dupe] item ID sent too many times', {\n item: item,\n batchSize: batch.length,\n timesSent: this.itemIdsSentSuccessfully[itemId]\n });\n }\n } else {\n this.reportError('[dupe] found item with no ID while removing', {item: item});\n }\n }, this));\n }\n\n } catch(err) {\n this.reportError('Error handling API response', err);\n this.resetFlush();\n }\n }, this);\n var requestOptions = {\n method: 'POST',\n verbose: true,\n ignore_json_errors: true, // eslint-disable-line camelcase\n timeout_ms: timeoutMS // eslint-disable-line camelcase\n };\n if (options.unloading) {\n requestOptions.transport = 'sendBeacon';\n }\n logger.log('MIXPANEL REQUEST:', dataForRequest);\n this.sendRequest(dataForRequest, requestOptions, batchSendCallback);\n\n } catch(err) {\n this.reportError('Error flushing request queue', err);\n this.resetFlush();\n }\n};\n\n/**\n * Log error to global logger and optional user-defined logger.\n */\nRequestBatcher.prototype.reportError = function(msg, err) {\n logger.error.apply(logger.error, arguments);\n if (this.errorReporter) {\n try {\n if (!(err instanceof Error)) {\n err = new Error(msg);\n }\n this.errorReporter(msg, err);\n } catch(err) {\n logger.error(err);\n }\n }\n};\n\n/**\n * A function used to track a Mixpanel event (e.g. MixpanelLib.track)\n * @callback trackFunction\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n */\n\n/** Public **/\n\nvar GDPR_DEFAULT_PERSISTENCE_PREFIX = '__mp_opt_in_out_';\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction optIn(token, options) {\n _optInOut(true, token, options);\n}\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-out cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-out cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-out cookie is set as secure or not\n */\nfunction optOut(token, options) {\n _optInOut(false, token, options);\n}\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} whether the user has opted in to the given opt type\n */\nfunction hasOptedIn(token, options) {\n return _getStorageValue(token, options) === '1';\n}\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the user has opted out of the given opt type\n */\nfunction hasOptedOut(token, options) {\n if (_hasDoNotTrackFlagOn(options)) {\n console.warn('This browser has \"Do Not Track\" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the \"Do Not Track\" browser setting, initialize the Mixpanel instance with the config \"ignore_dnt: true\"');\n return true;\n }\n var optedOut = _getStorageValue(token, options) === '0';\n if (optedOut) {\n console.warn('You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data.');\n }\n return optedOut;\n}\n\n/**\n * Wrap a MixpanelLib method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelLib(method) {\n return _addOptOutCheck(method, function(name) {\n return this.get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelPeople method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelPeople(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelGroup method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelGroup(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction clearOptInOut(token, options) {\n options = options || {};\n _getStorage(options).remove(\n _getStorageKey(token, options), !!options.crossSubdomainCookie, options.cookieDomain\n );\n}\n\n/** Private **/\n\n/**\n * Get storage util\n * @param {Object} [options]\n * @param {string} [options.persistenceType]\n * @returns {object} either _.cookie or _.localstorage\n */\nfunction _getStorage(options) {\n options = options || {};\n return options.persistenceType === 'localStorage' ? _.localStorage : _.cookie;\n}\n\n/**\n * Get the name of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the name of the cookie for the given opt type\n */\nfunction _getStorageKey(token, options) {\n options = options || {};\n return (options.persistencePrefix || GDPR_DEFAULT_PERSISTENCE_PREFIX) + token;\n}\n\n/**\n * Get the value of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the value of the cookie for the given opt type\n */\nfunction _getStorageValue(token, options) {\n return _getStorage(options).get(_getStorageKey(token, options));\n}\n\n/**\n * Check whether the user has set the DNT/doNotTrack setting to true in their browser\n * @param {Object} [options]\n * @param {string} [options.window] - alternate window object to check; used to force various DNT settings in browser tests\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the DNT setting is true\n */\nfunction _hasDoNotTrackFlagOn(options) {\n if (options && options.ignoreDnt) {\n return false;\n }\n var win = (options && options.window) || window$1;\n var nav = win['navigator'] || {};\n var hasDntOn = false;\n\n _.each([\n nav['doNotTrack'], // standard\n nav['msDoNotTrack'],\n win['doNotTrack']\n ], function(dntValue) {\n if (_.includes([true, 1, '1', 'yes'], dntValue)) {\n hasDntOn = true;\n }\n });\n\n return hasDntOn;\n}\n\n/**\n * Set cookie/localstorage for the user indicating that they are opted in or out for the given opt type\n * @param {boolean} optValue - whether to opt the user in or out for the given opt type\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction _optInOut(optValue, token, options) {\n if (!_.isString(token) || !token.length) {\n console.error('gdpr.' + (optValue ? 'optIn' : 'optOut') + ' called with an invalid token');\n return;\n }\n\n options = options || {};\n\n _getStorage(options).set(\n _getStorageKey(token, options),\n optValue ? 1 : 0,\n _.isNumber(options.cookieExpiration) ? options.cookieExpiration : null,\n !!options.crossSubdomainCookie,\n !!options.secureCookie,\n !!options.crossSiteCookie,\n options.cookieDomain\n );\n\n if (options.track && optValue) { // only track event if opting in (optValue=true)\n options.track(options.trackEventName || '$opt_in', options.trackProperties, {\n 'send_immediately': true\n });\n }\n}\n\n/**\n * Wrap a method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @param {function} getConfigValue - getter function for the Mixpanel API token and other options to be used with opt-out check\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction _addOptOutCheck(method, getConfigValue) {\n return function() {\n var optedOut = false;\n\n try {\n var token = getConfigValue.call(this, 'token');\n var ignoreDnt = getConfigValue.call(this, 'ignore_dnt');\n var persistenceType = getConfigValue.call(this, 'opt_out_tracking_persistence_type');\n var persistencePrefix = getConfigValue.call(this, 'opt_out_tracking_cookie_prefix');\n var win = getConfigValue.call(this, 'window'); // used to override window during browser tests\n\n if (token) { // if there was an issue getting the token, continue method execution as normal\n optedOut = hasOptedOut(token, {\n ignoreDnt: ignoreDnt,\n persistenceType: persistenceType,\n persistencePrefix: persistencePrefix,\n window: win\n });\n }\n } catch(err) {\n console.error('Unexpected error when checking tracking opt-out status: ' + err);\n }\n\n if (!optedOut) {\n return method.apply(this, arguments);\n }\n\n var callback = arguments[arguments.length - 1];\n if (typeof(callback) === 'function') {\n callback(0);\n }\n\n return;\n };\n}\n\n/** @const */ var SET_ACTION = '$set';\n/** @const */ var SET_ONCE_ACTION = '$set_once';\n/** @const */ var UNSET_ACTION = '$unset';\n/** @const */ var ADD_ACTION = '$add';\n/** @const */ var APPEND_ACTION = '$append';\n/** @const */ var UNION_ACTION = '$union';\n/** @const */ var REMOVE_ACTION = '$remove';\n/** @const */ var DELETE_ACTION = '$delete';\n\n// Common internal methods for mixpanel.people and mixpanel.group APIs.\n// These methods shouldn't involve network I/O.\nvar apiActions = {\n set_action: function(prop, to) {\n var data = {};\n var $set = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $set[k] = v;\n }\n }, this);\n } else {\n $set[prop] = to;\n }\n\n data[SET_ACTION] = $set;\n return data;\n },\n\n unset_action: function(prop) {\n var data = {};\n var $unset = [];\n if (!_.isArray(prop)) {\n prop = [prop];\n }\n\n _.each(prop, function(k) {\n if (!this._is_reserved_property(k)) {\n $unset.push(k);\n }\n }, this);\n\n data[UNSET_ACTION] = $unset;\n return data;\n },\n\n set_once_action: function(prop, to) {\n var data = {};\n var $set_once = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $set_once[k] = v;\n }\n }, this);\n } else {\n $set_once[prop] = to;\n }\n data[SET_ONCE_ACTION] = $set_once;\n return data;\n },\n\n union_action: function(list_name, values) {\n var data = {};\n var $union = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $union[k] = _.isArray(v) ? v : [v];\n }\n }, this);\n } else {\n $union[list_name] = _.isArray(values) ? values : [values];\n }\n data[UNION_ACTION] = $union;\n return data;\n },\n\n append_action: function(list_name, value) {\n var data = {};\n var $append = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $append[k] = v;\n }\n }, this);\n } else {\n $append[list_name] = value;\n }\n data[APPEND_ACTION] = $append;\n return data;\n },\n\n remove_action: function(list_name, value) {\n var data = {};\n var $remove = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $remove[k] = v;\n }\n }, this);\n } else {\n $remove[list_name] = value;\n }\n data[REMOVE_ACTION] = $remove;\n return data;\n },\n\n delete_action: function() {\n var data = {};\n data[DELETE_ACTION] = '';\n return data;\n }\n};\n\n/**\n * Mixpanel Group Object\n * @constructor\n */\nvar MixpanelGroup = function() {};\n\n_.extend(MixpanelGroup.prototype, apiActions);\n\nMixpanelGroup.prototype._init = function(mixpanel_instance, group_key, group_id) {\n this._mixpanel = mixpanel_instance;\n this._group_key = group_key;\n this._group_id = group_id;\n};\n\n/**\n * Set properties on a group.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').set('Location', '405 Howard');\n *\n * // or set multiple properties at once\n * mixpanel.get_group('company', 'mixpanel').set({\n * 'Location': '405 Howard',\n * 'Founded' : 2009,\n * });\n * // properties can be strings, integers, dates, or lists\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n var data = this.set_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/**\n * Set properties on a group, only if they do not yet exist.\n * This will not overwrite previous group property values, unlike\n * group.set().\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').set_once('Location', '405 Howard');\n *\n * // or set multiple properties at once\n * mixpanel.get_group('company', 'mixpanel').set_once({\n * 'Location': '405 Howard',\n * 'Founded' : 2009,\n * });\n * // properties can be strings, integers, lists or dates\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set_once = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n var data = this.set_once_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/**\n * Unset properties on a group permanently.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').unset('Founded');\n *\n * @param {String} prop The name of the property.\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.unset = addOptOutCheckMixpanelGroup(function(prop, callback) {\n var data = this.unset_action(prop);\n return this._send_request(data, callback);\n});\n\n/**\n * Merge a given list with a list-valued group property, excluding duplicate values.\n *\n * ### Usage:\n *\n * // merge a value to a list, creating it if needed\n * mixpanel.get_group('company', 'mixpanel').union('Location', ['San Francisco', 'London']);\n *\n * @param {String} list_name Name of the property.\n * @param {Array} values Values to merge with the given property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.union = addOptOutCheckMixpanelGroup(function(list_name, values, callback) {\n if (_.isObject(list_name)) {\n callback = values;\n }\n var data = this.union_action(list_name, values);\n return this._send_request(data, callback);\n});\n\n/**\n * Permanently delete a group.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').delete();\n *\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype['delete'] = addOptOutCheckMixpanelGroup(function(callback) {\n // bracket notation above prevents a minification error related to reserved words\n var data = this.delete_action();\n return this._send_request(data, callback);\n});\n\n/**\n * Remove a property from a group. The value will be ignored if doesn't exist.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').remove('Location', 'London');\n *\n * @param {String} list_name Name of the property.\n * @param {Object} value Value to remove from the given group property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.remove = addOptOutCheckMixpanelGroup(function(list_name, value, callback) {\n var data = this.remove_action(list_name, value);\n return this._send_request(data, callback);\n});\n\nMixpanelGroup.prototype._send_request = function(data, callback) {\n data['$group_key'] = this._group_key;\n data['$group_id'] = this._group_id;\n data['$token'] = this._get_config('token');\n\n var date_encoded_data = _.encodeDates(data);\n return this._mixpanel._track_or_batch({\n type: 'groups',\n data: date_encoded_data,\n endpoint: this._get_config('api_host') + '/' + this._get_config('api_routes')['groups'],\n batcher: this._mixpanel.request_batchers.groups\n }, callback);\n};\n\nMixpanelGroup.prototype._is_reserved_property = function(prop) {\n return prop === '$group_key' || prop === '$group_id';\n};\n\nMixpanelGroup.prototype._get_config = function(conf) {\n return this._mixpanel.get_config(conf);\n};\n\nMixpanelGroup.prototype.toString = function() {\n return this._mixpanel.toString() + '.group.' + this._group_key + '.' + this._group_id;\n};\n\n// MixpanelGroup Exports\nMixpanelGroup.prototype['remove'] = MixpanelGroup.prototype.remove;\nMixpanelGroup.prototype['set'] = MixpanelGroup.prototype.set;\nMixpanelGroup.prototype['set_once'] = MixpanelGroup.prototype.set_once;\nMixpanelGroup.prototype['union'] = MixpanelGroup.prototype.union;\nMixpanelGroup.prototype['unset'] = MixpanelGroup.prototype.unset;\nMixpanelGroup.prototype['toString'] = MixpanelGroup.prototype.toString;\n\n/**\n * Mixpanel People Object\n * @constructor\n */\nvar MixpanelPeople = function() {};\n\n_.extend(MixpanelPeople.prototype, apiActions);\n\nMixpanelPeople.prototype._init = function(mixpanel_instance) {\n this._mixpanel = mixpanel_instance;\n};\n\n/*\n* Set properties on a user record.\n*\n* ### Usage:\n*\n* mixpanel.people.set('gender', 'm');\n*\n* // or set multiple properties at once\n* mixpanel.people.set({\n* 'Company': 'Acme',\n* 'Plan': 'Premium',\n* 'Upgrade date': new Date()\n* });\n* // properties can be strings, integers, dates, or lists\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n var data = this.set_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n // make sure that the referrer info has been updated and saved\n if (this._get_config('save_referrer')) {\n this._mixpanel['persistence'].update_referrer_info(document.referrer);\n }\n\n // update $set object with default people properties\n data[SET_ACTION] = _.extend(\n {},\n _.info.people_properties(),\n data[SET_ACTION]\n );\n return this._send_request(data, callback);\n});\n\n/*\n* Set properties on a user record, only if they do not yet exist.\n* This will not overwrite previous people property values, unlike\n* people.set().\n*\n* ### Usage:\n*\n* mixpanel.people.set_once('First Login Date', new Date());\n*\n* // or set multiple properties at once\n* mixpanel.people.set_once({\n* 'First Login Date': new Date(),\n* 'Starting Plan': 'Premium'\n* });\n*\n* // properties can be strings, integers or dates\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set_once = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n var data = this.set_once_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/*\n* Unset properties on a user record (permanently removes the properties and their values from a profile).\n*\n* ### Usage:\n*\n* mixpanel.people.unset('gender');\n*\n* // or unset multiple properties at once\n* mixpanel.people.unset(['gender', 'Company']);\n*\n* @param {Array|String} prop If a string, this is the name of the property. If an array, this is a list of property names.\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.unset = addOptOutCheckMixpanelPeople(function(prop, callback) {\n var data = this.unset_action(prop);\n return this._send_request(data, callback);\n});\n\n/*\n* Increment/decrement numeric people analytics properties.\n*\n* ### Usage:\n*\n* mixpanel.people.increment('page_views', 1);\n*\n* // or, for convenience, if you're just incrementing a counter by\n* // 1, you can simply do\n* mixpanel.people.increment('page_views');\n*\n* // to decrement a counter, pass a negative number\n* mixpanel.people.increment('credits_left', -1);\n*\n* // like mixpanel.people.set(), you can increment multiple\n* // properties at once:\n* mixpanel.people.increment({\n* counter1: 1,\n* counter2: 6\n* });\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and numeric values.\n* @param {Number} [by] An amount to increment the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.increment = addOptOutCheckMixpanelPeople(function(prop, by, callback) {\n var data = {};\n var $add = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n if (isNaN(parseFloat(v))) {\n console.error('Invalid increment value passed to mixpanel.people.increment - must be a number');\n return;\n } else {\n $add[k] = v;\n }\n }\n }, this);\n callback = by;\n } else {\n // convenience: mixpanel.people.increment('property'); will\n // increment 'property' by 1\n if (_.isUndefined(by)) {\n by = 1;\n }\n $add[prop] = by;\n }\n data[ADD_ACTION] = $add;\n\n return this._send_request(data, callback);\n});\n\n/*\n* Append a value to a list-valued people analytics property.\n*\n* ### Usage:\n*\n* // append a value to a list, creating it if needed\n* mixpanel.people.append('pages_visited', 'homepage');\n*\n* // like mixpanel.people.set(), you can append multiple\n* // properties at once:\n* mixpanel.people.append({\n* list1: 'bob',\n* list2: 123\n* });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value An item to append to the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.append = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n if (_.isObject(list_name)) {\n callback = value;\n }\n var data = this.append_action(list_name, value);\n return this._send_request(data, callback);\n});\n\n/*\n* Remove a value from a list-valued people analytics property.\n*\n* ### Usage:\n*\n* mixpanel.people.remove('School', 'UCB');\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value Item to remove from the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.remove = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n if (_.isObject(list_name)) {\n callback = value;\n }\n var data = this.remove_action(list_name, value);\n return this._send_request(data, callback);\n});\n\n/*\n* Merge a given list with a list-valued people analytics property,\n* excluding duplicate values.\n*\n* ### Usage:\n*\n* // merge a value to a list, creating it if needed\n* mixpanel.people.union('pages_visited', 'homepage');\n*\n* // like mixpanel.people.set(), you can append multiple\n* // properties at once:\n* mixpanel.people.union({\n* list1: 'bob',\n* list2: 123\n* });\n*\n* // like mixpanel.people.append(), you can append multiple\n* // values to the same list:\n* mixpanel.people.union({\n* list1: ['bob', 'billy']\n* });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] Value / values to merge with the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.union = addOptOutCheckMixpanelPeople(function(list_name, values, callback) {\n if (_.isObject(list_name)) {\n callback = values;\n }\n var data = this.union_action(list_name, values);\n return this._send_request(data, callback);\n});\n\n/*\n * Record that you have charged the current user a certain amount\n * of money. Charges recorded with track_charge() will appear in the\n * Mixpanel revenue report.\n *\n * ### Usage:\n *\n * // charge a user $50\n * mixpanel.people.track_charge(50);\n *\n * // charge a user $30.50 on the 2nd of january\n * mixpanel.people.track_charge(30.50, {\n * '$time': new Date('jan 1 2012')\n * });\n *\n * @param {Number} amount The amount of money charged to the current user\n * @param {Object} [properties] An associative array of properties associated with the charge\n * @param {Function} [callback] If provided, the callback will be called when the server responds\n * @deprecated\n */\nMixpanelPeople.prototype.track_charge = addOptOutCheckMixpanelPeople(function(amount, properties, callback) {\n if (!_.isNumber(amount)) {\n amount = parseFloat(amount);\n if (isNaN(amount)) {\n console.error('Invalid value passed to mixpanel.people.track_charge - must be a number');\n return;\n }\n }\n\n return this.append('$transactions', _.extend({\n '$amount': amount\n }, properties), callback);\n});\n\n/*\n * Permanently clear all revenue report transactions from the\n * current user's people analytics profile.\n *\n * ### Usage:\n *\n * mixpanel.people.clear_charges();\n *\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n * @deprecated\n */\nMixpanelPeople.prototype.clear_charges = function(callback) {\n return this.set('$transactions', [], callback);\n};\n\n/*\n* Permanently deletes the current people analytics profile from\n* Mixpanel (using the current distinct_id).\n*\n* ### Usage:\n*\n* // remove the all data you have stored about the current user\n* mixpanel.people.delete_user();\n*\n*/\nMixpanelPeople.prototype.delete_user = function() {\n if (!this._identify_called()) {\n console.error('mixpanel.people.delete_user() requires you to call identify() first');\n return;\n }\n var data = {'$delete': this._mixpanel.get_distinct_id()};\n return this._send_request(data);\n};\n\nMixpanelPeople.prototype.toString = function() {\n return this._mixpanel.toString() + '.people';\n};\n\nMixpanelPeople.prototype._send_request = function(data, callback) {\n data['$token'] = this._get_config('token');\n data['$distinct_id'] = this._mixpanel.get_distinct_id();\n var device_id = this._mixpanel.get_property('$device_id');\n var user_id = this._mixpanel.get_property('$user_id');\n var had_persisted_distinct_id = this._mixpanel.get_property('$had_persisted_distinct_id');\n if (device_id) {\n data['$device_id'] = device_id;\n }\n if (user_id) {\n data['$user_id'] = user_id;\n }\n if (had_persisted_distinct_id) {\n data['$had_persisted_distinct_id'] = had_persisted_distinct_id;\n }\n\n var date_encoded_data = _.encodeDates(data);\n\n if (!this._identify_called()) {\n this._enqueue(data);\n if (!_.isUndefined(callback)) {\n if (this._get_config('verbose')) {\n callback({status: -1, error: null});\n } else {\n callback(-1);\n }\n }\n return _.truncate(date_encoded_data, 255);\n }\n\n return this._mixpanel._track_or_batch({\n type: 'people',\n data: date_encoded_data,\n endpoint: this._get_config('api_host') + '/' + this._get_config('api_routes')['engage'],\n batcher: this._mixpanel.request_batchers.people\n }, callback);\n};\n\nMixpanelPeople.prototype._get_config = function(conf_var) {\n return this._mixpanel.get_config(conf_var);\n};\n\nMixpanelPeople.prototype._identify_called = function() {\n return this._mixpanel._flags.identify_called === true;\n};\n\n// Queue up engage operations if identify hasn't been called yet.\nMixpanelPeople.prototype._enqueue = function(data) {\n if (SET_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(SET_ACTION, data);\n } else if (SET_ONCE_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(SET_ONCE_ACTION, data);\n } else if (UNSET_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(UNSET_ACTION, data);\n } else if (ADD_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(ADD_ACTION, data);\n } else if (APPEND_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, data);\n } else if (REMOVE_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, data);\n } else if (UNION_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(UNION_ACTION, data);\n } else {\n console.error('Invalid call to _enqueue():', data);\n }\n};\n\nMixpanelPeople.prototype._flush_one_queue = function(action, action_method, callback, queue_to_params_fn) {\n var _this = this;\n var queued_data = _.extend({}, this._mixpanel['persistence'].load_queue(action));\n var action_params = queued_data;\n\n if (!_.isUndefined(queued_data) && _.isObject(queued_data) && !_.isEmptyObject(queued_data)) {\n _this._mixpanel['persistence']._pop_from_people_queue(action, queued_data);\n _this._mixpanel['persistence'].save();\n if (queue_to_params_fn) {\n action_params = queue_to_params_fn(queued_data);\n }\n action_method.call(_this, action_params, function(response, data) {\n // on bad response, we want to add it back to the queue\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(action, queued_data);\n }\n if (!_.isUndefined(callback)) {\n callback(response, data);\n }\n });\n }\n};\n\n// Flush queued engage operations - order does not matter,\n// and there are network level race conditions anyway\nMixpanelPeople.prototype._flush = function(\n _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n var _this = this;\n\n this._flush_one_queue(SET_ACTION, this.set, _set_callback);\n this._flush_one_queue(SET_ONCE_ACTION, this.set_once, _set_once_callback);\n this._flush_one_queue(UNSET_ACTION, this.unset, _unset_callback, function(queue) { return _.keys(queue); });\n this._flush_one_queue(ADD_ACTION, this.increment, _add_callback);\n this._flush_one_queue(UNION_ACTION, this.union, _union_callback);\n\n // we have to fire off each $append individually since there is\n // no concat method server side\n var $append_queue = this._mixpanel['persistence'].load_queue(APPEND_ACTION);\n if (!_.isUndefined($append_queue) && _.isArray($append_queue) && $append_queue.length) {\n var $append_item;\n var append_callback = function(response, data) {\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, $append_item);\n }\n if (!_.isUndefined(_append_callback)) {\n _append_callback(response, data);\n }\n };\n for (var i = $append_queue.length - 1; i >= 0; i--) {\n $append_queue = this._mixpanel['persistence'].load_queue(APPEND_ACTION);\n $append_item = $append_queue.pop();\n _this._mixpanel['persistence'].save();\n if (!_.isEmptyObject($append_item)) {\n _this.append($append_item, append_callback);\n }\n }\n }\n\n // same for $remove\n var $remove_queue = this._mixpanel['persistence'].load_queue(REMOVE_ACTION);\n if (!_.isUndefined($remove_queue) && _.isArray($remove_queue) && $remove_queue.length) {\n var $remove_item;\n var remove_callback = function(response, data) {\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, $remove_item);\n }\n if (!_.isUndefined(_remove_callback)) {\n _remove_callback(response, data);\n }\n };\n for (var j = $remove_queue.length - 1; j >= 0; j--) {\n $remove_queue = this._mixpanel['persistence'].load_queue(REMOVE_ACTION);\n $remove_item = $remove_queue.pop();\n _this._mixpanel['persistence'].save();\n if (!_.isEmptyObject($remove_item)) {\n _this.remove($remove_item, remove_callback);\n }\n }\n }\n};\n\nMixpanelPeople.prototype._is_reserved_property = function(prop) {\n return prop === '$distinct_id' || prop === '$token' || prop === '$device_id' || prop === '$user_id' || prop === '$had_persisted_distinct_id';\n};\n\n// MixpanelPeople Exports\nMixpanelPeople.prototype['set'] = MixpanelPeople.prototype.set;\nMixpanelPeople.prototype['set_once'] = MixpanelPeople.prototype.set_once;\nMixpanelPeople.prototype['unset'] = MixpanelPeople.prototype.unset;\nMixpanelPeople.prototype['increment'] = MixpanelPeople.prototype.increment;\nMixpanelPeople.prototype['append'] = MixpanelPeople.prototype.append;\nMixpanelPeople.prototype['remove'] = MixpanelPeople.prototype.remove;\nMixpanelPeople.prototype['union'] = MixpanelPeople.prototype.union;\nMixpanelPeople.prototype['track_charge'] = MixpanelPeople.prototype.track_charge;\nMixpanelPeople.prototype['clear_charges'] = MixpanelPeople.prototype.clear_charges;\nMixpanelPeople.prototype['delete_user'] = MixpanelPeople.prototype.delete_user;\nMixpanelPeople.prototype['toString'] = MixpanelPeople.prototype.toString;\n\n/*\n * Constants\n */\n/** @const */ var SET_QUEUE_KEY = '__mps';\n/** @const */ var SET_ONCE_QUEUE_KEY = '__mpso';\n/** @const */ var UNSET_QUEUE_KEY = '__mpus';\n/** @const */ var ADD_QUEUE_KEY = '__mpa';\n/** @const */ var APPEND_QUEUE_KEY = '__mpap';\n/** @const */ var REMOVE_QUEUE_KEY = '__mpr';\n/** @const */ var UNION_QUEUE_KEY = '__mpu';\n// This key is deprecated, but we want to check for it to see whether aliasing is allowed.\n/** @const */ var PEOPLE_DISTINCT_ID_KEY = '$people_distinct_id';\n/** @const */ var ALIAS_ID_KEY = '__alias';\n/** @const */ var EVENT_TIMERS_KEY = '__timers';\n/** @const */ var RESERVED_PROPERTIES = [\n SET_QUEUE_KEY,\n SET_ONCE_QUEUE_KEY,\n UNSET_QUEUE_KEY,\n ADD_QUEUE_KEY,\n APPEND_QUEUE_KEY,\n REMOVE_QUEUE_KEY,\n UNION_QUEUE_KEY,\n PEOPLE_DISTINCT_ID_KEY,\n ALIAS_ID_KEY,\n EVENT_TIMERS_KEY\n];\n\n/**\n * Mixpanel Persistence Object\n * @constructor\n */\nvar MixpanelPersistence = function(config) {\n this['props'] = {};\n this.campaign_params_saved = false;\n\n if (config['persistence_name']) {\n this.name = 'mp_' + config['persistence_name'];\n } else {\n this.name = 'mp_' + config['token'] + '_mixpanel';\n }\n\n var storage_type = config['persistence'];\n if (storage_type !== 'cookie' && storage_type !== 'localStorage') {\n console.critical('Unknown persistence type ' + storage_type + '; falling back to cookie');\n storage_type = config['persistence'] = 'cookie';\n }\n\n if (storage_type === 'localStorage' && _.localStorage.is_supported()) {\n this.storage = _.localStorage;\n } else {\n this.storage = _.cookie;\n }\n\n this.load();\n this.update_config(config);\n this.upgrade(config);\n this.save();\n};\n\nMixpanelPersistence.prototype.properties = function() {\n var p = {};\n\n this.load();\n\n // Filter out reserved properties\n _.each(this['props'], function(v, k) {\n if (!_.include(RESERVED_PROPERTIES, k)) {\n p[k] = v;\n }\n });\n return p;\n};\n\nMixpanelPersistence.prototype.load = function() {\n if (this.disabled) { return; }\n\n var entry = this.storage.parse(this.name);\n\n if (entry) {\n this['props'] = _.extend({}, entry);\n }\n};\n\nMixpanelPersistence.prototype.upgrade = function(config) {\n var upgrade_from_old_lib = config['upgrade'],\n old_cookie_name,\n old_cookie;\n\n if (upgrade_from_old_lib) {\n old_cookie_name = 'mp_super_properties';\n // Case where they had a custom cookie name before.\n if (typeof(upgrade_from_old_lib) === 'string') {\n old_cookie_name = upgrade_from_old_lib;\n }\n\n old_cookie = this.storage.parse(old_cookie_name);\n\n // remove the cookie\n this.storage.remove(old_cookie_name);\n this.storage.remove(old_cookie_name, true);\n\n if (old_cookie) {\n this['props'] = _.extend(\n this['props'],\n old_cookie['all'],\n old_cookie['events']\n );\n }\n }\n\n if (!config['cookie_name'] && config['name'] !== 'mixpanel') {\n // special case to handle people with cookies of the form\n // mp_TOKEN_INSTANCENAME from the first release of this library\n old_cookie_name = 'mp_' + config['token'] + '_' + config['name'];\n old_cookie = this.storage.parse(old_cookie_name);\n\n if (old_cookie) {\n this.storage.remove(old_cookie_name);\n this.storage.remove(old_cookie_name, true);\n\n // Save the prop values that were in the cookie from before -\n // this should only happen once as we delete the old one.\n this.register_once(old_cookie);\n }\n }\n\n if (this.storage === _.localStorage) {\n old_cookie = _.cookie.parse(this.name);\n\n _.cookie.remove(this.name);\n _.cookie.remove(this.name, true);\n\n if (old_cookie) {\n this.register_once(old_cookie);\n }\n }\n};\n\nMixpanelPersistence.prototype.save = function() {\n if (this.disabled) { return; }\n\n this.storage.set(\n this.name,\n _.JSONEncode(this['props']),\n this.expire_days,\n this.cross_subdomain,\n this.secure,\n this.cross_site,\n this.cookie_domain\n );\n};\n\nMixpanelPersistence.prototype.load_prop = function(key) {\n this.load();\n return this['props'][key];\n};\n\nMixpanelPersistence.prototype.remove = function() {\n // remove both domain and subdomain cookies\n this.storage.remove(this.name, false, this.cookie_domain);\n this.storage.remove(this.name, true, this.cookie_domain);\n};\n\n// removes the storage entry and deletes all loaded data\n// forced name for tests\nMixpanelPersistence.prototype.clear = function() {\n this.remove();\n this['props'] = {};\n};\n\n/**\n* @param {Object} props\n* @param {*=} default_value\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register_once = function(props, default_value, days) {\n if (_.isObject(props)) {\n if (typeof(default_value) === 'undefined') { default_value = 'None'; }\n this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n this.load();\n\n _.each(props, function(val, prop) {\n if (!this['props'].hasOwnProperty(prop) || this['props'][prop] === default_value) {\n this['props'][prop] = val;\n }\n }, this);\n\n this.save();\n\n return true;\n }\n return false;\n};\n\n/**\n* @param {Object} props\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register = function(props, days) {\n if (_.isObject(props)) {\n this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n this.load();\n _.extend(this['props'], props);\n this.save();\n\n return true;\n }\n return false;\n};\n\nMixpanelPersistence.prototype.unregister = function(prop) {\n this.load();\n if (prop in this['props']) {\n delete this['props'][prop];\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.update_search_keyword = function(referrer) {\n this.register(_.info.searchInfo(referrer));\n};\n\n// EXPORTED METHOD, we test this directly.\nMixpanelPersistence.prototype.update_referrer_info = function(referrer) {\n // If referrer doesn't exist, we want to note the fact that it was type-in traffic.\n this.register_once({\n '$initial_referrer': referrer || '$direct',\n '$initial_referring_domain': _.info.referringDomain(referrer) || '$direct'\n }, '');\n};\n\nMixpanelPersistence.prototype.get_referrer_info = function() {\n return _.strip_empty_properties({\n '$initial_referrer': this['props']['$initial_referrer'],\n '$initial_referring_domain': this['props']['$initial_referring_domain']\n });\n};\n\nMixpanelPersistence.prototype.update_config = function(config) {\n this.default_expiry = this.expire_days = config['cookie_expiration'];\n this.set_disabled(config['disable_persistence']);\n this.set_cookie_domain(config['cookie_domain']);\n this.set_cross_site(config['cross_site_cookie']);\n this.set_cross_subdomain(config['cross_subdomain_cookie']);\n this.set_secure(config['secure_cookie']);\n};\n\nMixpanelPersistence.prototype.set_disabled = function(disabled) {\n this.disabled = disabled;\n if (this.disabled) {\n this.remove();\n } else {\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cookie_domain = function(cookie_domain) {\n if (cookie_domain !== this.cookie_domain) {\n this.remove();\n this.cookie_domain = cookie_domain;\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cross_site = function(cross_site) {\n if (cross_site !== this.cross_site) {\n this.cross_site = cross_site;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cross_subdomain = function(cross_subdomain) {\n if (cross_subdomain !== this.cross_subdomain) {\n this.cross_subdomain = cross_subdomain;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.get_cross_subdomain = function() {\n return this.cross_subdomain;\n};\n\nMixpanelPersistence.prototype.set_secure = function(secure) {\n if (secure !== this.secure) {\n this.secure = secure ? true : false;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype._add_to_people_queue = function(queue, data) {\n var q_key = this._get_queue_key(queue),\n q_data = data[queue],\n set_q = this._get_or_create_queue(SET_ACTION),\n set_once_q = this._get_or_create_queue(SET_ONCE_ACTION),\n unset_q = this._get_or_create_queue(UNSET_ACTION),\n add_q = this._get_or_create_queue(ADD_ACTION),\n union_q = this._get_or_create_queue(UNION_ACTION),\n remove_q = this._get_or_create_queue(REMOVE_ACTION, []),\n append_q = this._get_or_create_queue(APPEND_ACTION, []);\n\n if (q_key === SET_QUEUE_KEY) {\n // Update the set queue - we can override any existing values\n _.extend(set_q, q_data);\n // if there was a pending increment, override it\n // with the set.\n this._pop_from_people_queue(ADD_ACTION, q_data);\n // if there was a pending union, override it\n // with the set.\n this._pop_from_people_queue(UNION_ACTION, q_data);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === SET_ONCE_QUEUE_KEY) {\n // only queue the data if there is not already a set_once call for it.\n _.each(q_data, function(v, k) {\n if (!(k in set_once_q)) {\n set_once_q[k] = v;\n }\n });\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === UNSET_QUEUE_KEY) {\n _.each(q_data, function(prop) {\n\n // undo previously-queued actions on this key\n _.each([set_q, set_once_q, add_q, union_q], function(enqueued_obj) {\n if (prop in enqueued_obj) {\n delete enqueued_obj[prop];\n }\n });\n _.each(append_q, function(append_obj) {\n if (prop in append_obj) {\n delete append_obj[prop];\n }\n });\n\n unset_q[prop] = true;\n\n });\n } else if (q_key === ADD_QUEUE_KEY) {\n _.each(q_data, function(v, k) {\n // If it exists in the set queue, increment\n // the value\n if (k in set_q) {\n set_q[k] += v;\n } else {\n // If it doesn't exist, update the add\n // queue\n if (!(k in add_q)) {\n add_q[k] = 0;\n }\n add_q[k] += v;\n }\n }, this);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === UNION_QUEUE_KEY) {\n _.each(q_data, function(v, k) {\n if (_.isArray(v)) {\n if (!(k in union_q)) {\n union_q[k] = [];\n }\n // We may send duplicates, the server will dedup them.\n union_q[k] = union_q[k].concat(v);\n }\n });\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === REMOVE_QUEUE_KEY) {\n remove_q.push(q_data);\n this._pop_from_people_queue(APPEND_ACTION, q_data);\n } else if (q_key === APPEND_QUEUE_KEY) {\n append_q.push(q_data);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n }\n\n console.log('MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):');\n console.log(data);\n\n this.save();\n};\n\nMixpanelPersistence.prototype._pop_from_people_queue = function(queue, data) {\n var q = this['props'][this._get_queue_key(queue)];\n if (!_.isUndefined(q)) {\n _.each(data, function(v, k) {\n if (queue === APPEND_ACTION || queue === REMOVE_ACTION) {\n // list actions: only remove if both k+v match\n // e.g. remove should not override append in a case like\n // append({foo: 'bar'}); remove({foo: 'qux'})\n _.each(q, function(queued_action) {\n if (queued_action[k] === v) {\n delete queued_action[k];\n }\n });\n } else {\n delete q[k];\n }\n }, this);\n }\n};\n\nMixpanelPersistence.prototype.load_queue = function(queue) {\n return this.load_prop(this._get_queue_key(queue));\n};\n\nMixpanelPersistence.prototype._get_queue_key = function(queue) {\n if (queue === SET_ACTION) {\n return SET_QUEUE_KEY;\n } else if (queue === SET_ONCE_ACTION) {\n return SET_ONCE_QUEUE_KEY;\n } else if (queue === UNSET_ACTION) {\n return UNSET_QUEUE_KEY;\n } else if (queue === ADD_ACTION) {\n return ADD_QUEUE_KEY;\n } else if (queue === APPEND_ACTION) {\n return APPEND_QUEUE_KEY;\n } else if (queue === REMOVE_ACTION) {\n return REMOVE_QUEUE_KEY;\n } else if (queue === UNION_ACTION) {\n return UNION_QUEUE_KEY;\n } else {\n console.error('Invalid queue:', queue);\n }\n};\n\nMixpanelPersistence.prototype._get_or_create_queue = function(queue, default_val) {\n var key = this._get_queue_key(queue);\n default_val = _.isUndefined(default_val) ? {} : default_val;\n return this['props'][key] || (this['props'][key] = default_val);\n};\n\nMixpanelPersistence.prototype.set_event_timer = function(event_name, timestamp) {\n var timers = this.load_prop(EVENT_TIMERS_KEY) || {};\n timers[event_name] = timestamp;\n this['props'][EVENT_TIMERS_KEY] = timers;\n this.save();\n};\n\nMixpanelPersistence.prototype.remove_event_timer = function(event_name) {\n var timers = this.load_prop(EVENT_TIMERS_KEY) || {};\n var timestamp = timers[event_name];\n if (!_.isUndefined(timestamp)) {\n delete this['props'][EVENT_TIMERS_KEY][event_name];\n this.save();\n }\n return timestamp;\n};\n\n/*\n * Mixpanel JS Library\n *\n * Copyright 2012, Mixpanel, Inc. All Rights Reserved\n * http://mixpanel.com/\n *\n * Includes portions of Underscore.js\n * http://documentcloud.github.com/underscore/\n * (c) 2011 Jeremy Ashkenas, DocumentCloud Inc.\n * Released under the MIT License.\n */\n\n// ==ClosureCompiler==\n// @compilation_level ADVANCED_OPTIMIZATIONS\n// @output_file_name mixpanel-2.8.min.js\n// ==/ClosureCompiler==\n\n/*\nSIMPLE STYLE GUIDE:\n\nthis.x === public function\nthis._x === internal - only use within this file\nthis.__x === private - only use within the class\n\nGlobals should be all caps\n*/\n\nvar init_type; // MODULE or SNIPPET loader\nvar mixpanel_master; // main mixpanel instance / object\nvar INIT_MODULE = 0;\nvar INIT_SNIPPET = 1;\n\nvar IDENTITY_FUNC = function(x) {return x;};\nvar NOOP_FUNC = function() {};\n\n/** @const */ var PRIMARY_INSTANCE_NAME = 'mixpanel';\n/** @const */ var PAYLOAD_TYPE_BASE64 = 'base64';\n/** @const */ var PAYLOAD_TYPE_JSON = 'json';\n/** @const */ var DEVICE_ID_PREFIX = '$device:';\n\n\n/*\n * Dynamic... constants? Is that an oxymoron?\n */\n// http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/\n// https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#withCredentials\nvar USE_XHR = (window$1.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest());\n\n// IE<10 does not support cross-origin XHR's but script tags\n// with defer won't block window.onload; ENQUEUE_REQUESTS\n// should only be true for Opera<12\nvar ENQUEUE_REQUESTS = !USE_XHR && (userAgent.indexOf('MSIE') === -1) && (userAgent.indexOf('Mozilla') === -1);\n\n// save reference to navigator.sendBeacon so it can be minified\nvar sendBeacon = null;\nif (navigator['sendBeacon']) {\n sendBeacon = function() {\n // late reference to navigator.sendBeacon to allow patching/spying\n return navigator['sendBeacon'].apply(navigator, arguments);\n };\n}\n\nvar DEFAULT_API_ROUTES = {\n 'track': 'track/',\n 'engage': 'engage/',\n 'groups': 'groups/'\n};\n\n/*\n * Module-level globals\n */\nvar DEFAULT_CONFIG = {\n 'api_host': 'https://api-js.mixpanel.com',\n 'api_routes': DEFAULT_API_ROUTES,\n 'api_method': 'POST',\n 'api_transport': 'XHR',\n 'api_payload_format': PAYLOAD_TYPE_BASE64,\n 'app_host': 'https://mixpanel.com',\n 'cdn': 'https://cdn.mxpnl.com',\n 'cross_site_cookie': false,\n 'cross_subdomain_cookie': true,\n 'error_reporter': NOOP_FUNC,\n 'persistence': 'cookie',\n 'persistence_name': '',\n 'cookie_domain': '',\n 'cookie_name': '',\n 'loaded': NOOP_FUNC,\n 'mp_loader': null,\n 'track_marketing': true,\n 'track_pageview': false,\n 'skip_first_touch_marketing': false,\n 'store_google': true,\n 'stop_utm_persistence': false,\n 'save_referrer': true,\n 'test': false,\n 'verbose': false,\n 'img': false,\n 'debug': false,\n 'track_links_timeout': 300,\n 'cookie_expiration': 365,\n 'upgrade': false,\n 'disable_persistence': false,\n 'disable_cookie': false,\n 'secure_cookie': false,\n 'ip': true,\n 'opt_out_tracking_by_default': false,\n 'opt_out_persistence_by_default': false,\n 'opt_out_tracking_persistence_type': 'localStorage',\n 'opt_out_tracking_cookie_prefix': null,\n 'property_blacklist': [],\n 'xhr_headers': {}, // { header: value, header2: value }\n 'ignore_dnt': false,\n 'batch_requests': true,\n 'batch_size': 50,\n 'batch_flush_interval_ms': 5000,\n 'batch_request_timeout_ms': 90000,\n 'batch_autostart': true,\n 'hooks': {}\n};\n\nvar DOM_LOADED = false;\n\n/**\n * Mixpanel Library Object\n * @constructor\n */\nvar MixpanelLib = function() {};\n\n\n/**\n * create_mplib(token:string, config:object, name:string)\n *\n * This function is used by the init method of MixpanelLib objects\n * as well as the main initializer at the end of the JSLib (that\n * initializes document.mixpanel as well as any additional instances\n * declared before this file has loaded).\n */\nvar create_mplib = function(token, config, name) {\n var instance,\n target = (name === PRIMARY_INSTANCE_NAME) ? mixpanel_master : mixpanel_master[name];\n\n if (target && init_type === INIT_MODULE) {\n instance = target;\n } else {\n if (target && !_.isArray(target)) {\n console.error('You have already initialized ' + name);\n return;\n }\n instance = new MixpanelLib();\n }\n\n instance._cached_groups = {}; // cache groups in a pool\n\n instance._init(token, config, name);\n\n instance['people'] = new MixpanelPeople();\n instance['people']._init(instance);\n\n if (!instance.get_config('skip_first_touch_marketing')) {\n // We need null UTM params in the object because\n // UTM parameters act as a tuple. If any UTM param\n // is present, then we set all UTM params including\n // empty ones together\n var utm_params = _.info.campaignParams(null);\n var initial_utm_params = {};\n var has_utm = false;\n _.each(utm_params, function(utm_value, utm_key) {\n initial_utm_params['initial_' + utm_key] = utm_value;\n if (utm_value) {\n has_utm = true;\n }\n });\n if (has_utm) {\n instance['people'].set_once(initial_utm_params);\n }\n }\n\n // if any instance on the page has debug = true, we set the\n // global debug to be true\n Config.DEBUG = Config.DEBUG || instance.get_config('debug');\n\n // if target is not defined, we called init after the lib already\n // loaded, so there won't be an array of things to execute\n if (!_.isUndefined(target) && _.isArray(target)) {\n // Crunch through the people queue first - we queue this data up &\n // flush on identify, so it's better to do all these operations first\n instance._execute_array.call(instance['people'], target['people']);\n instance._execute_array(target);\n }\n\n return instance;\n};\n\n// Initialization methods\n\n/**\n * This function initializes a new instance of the Mixpanel tracking object.\n * All new instances are added to the main mixpanel object as sub properties (such as\n * mixpanel.library_name) and also returned by this function. To define a\n * second instance on the page, you would call:\n *\n * mixpanel.init('new token', { your: 'config' }, 'library_name');\n *\n * and use it like so:\n *\n * mixpanel.library_name.track(...);\n *\n * @param {String} token Your Mixpanel API token\n * @param {Object} [config] A dictionary of config options to override. <a href=\"https://github.com/mixpanel/mixpanel-js/blob/v2.46.0/src/mixpanel-core.js#L88-L127\">See a list of default config options</a>.\n * @param {String} [name] The name for the new mixpanel instance that you want created\n */\nMixpanelLib.prototype.init = function (token, config, name) {\n if (_.isUndefined(name)) {\n this.report_error('You must name your new library: init(token, config, name)');\n return;\n }\n if (name === PRIMARY_INSTANCE_NAME) {\n this.report_error('You must initialize the main mixpanel object right after you include the Mixpanel js snippet');\n return;\n }\n\n var instance = create_mplib(token, config, name);\n mixpanel_master[name] = instance;\n instance._loaded();\n\n return instance;\n};\n\n// mixpanel._init(token:string, config:object, name:string)\n//\n// This function sets up the current instance of the mixpanel\n// library. The difference between this method and the init(...)\n// method is this one initializes the actual instance, whereas the\n// init(...) method sets up a new library and calls _init on it.\n//\nMixpanelLib.prototype._init = function(token, config, name) {\n config = config || {};\n\n this['__loaded'] = true;\n this['config'] = {};\n\n var variable_features = {};\n\n // default to JSON payload for standard mixpanel.com API hosts\n if (!('api_payload_format' in config)) {\n var api_host = config['api_host'] || DEFAULT_CONFIG['api_host'];\n if (api_host.match(/\\.mixpanel\\.com/)) {\n variable_features['api_payload_format'] = PAYLOAD_TYPE_JSON;\n }\n }\n\n this.set_config(_.extend({}, DEFAULT_CONFIG, variable_features, config, {\n 'name': name,\n 'token': token,\n 'callback_fn': ((name === PRIMARY_INSTANCE_NAME) ? name : PRIMARY_INSTANCE_NAME + '.' + name) + '._jsc'\n }));\n\n this['_jsc'] = NOOP_FUNC;\n\n this.__dom_loaded_queue = [];\n this.__request_queue = [];\n this.__disabled_events = [];\n this._flags = {\n 'disable_all_events': false,\n 'identify_called': false\n };\n\n // set up request queueing/batching\n this.request_batchers = {};\n this._batch_requests = this.get_config('batch_requests');\n if (this._batch_requests) {\n if (!_.localStorage.is_supported(true) || !USE_XHR) {\n this._batch_requests = false;\n console.log('Turning off Mixpanel request-queueing; needs XHR and localStorage support');\n _.each(this.get_batcher_configs(), function(batcher_config) {\n console.log('Clearing batch queue ' + batcher_config.queue_key);\n _.localStorage.remove(batcher_config.queue_key);\n });\n } else {\n this.init_batchers();\n if (sendBeacon && window$1.addEventListener) {\n // Before page closes or hides (user tabs away etc), attempt to flush any events\n // queued up via navigator.sendBeacon. Since sendBeacon doesn't report success/failure,\n // events will not be removed from the persistent store; if the site is loaded again,\n // the events will be flushed again on startup and deduplicated on the Mixpanel server\n // side.\n // There is no reliable way to capture only page close events, so we lean on the\n // visibilitychange and pagehide events as recommended at\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event#usage_notes.\n // These events fire when the user clicks away from the current page/tab, so will occur\n // more frequently than page unload, but are the only mechanism currently for capturing\n // this scenario somewhat reliably.\n var flush_on_unload = _.bind(function() {\n if (!this.request_batchers.events.stopped) {\n this.request_batchers.events.flush({unloading: true});\n }\n }, this);\n window$1.addEventListener('pagehide', function(ev) {\n if (ev['persisted']) {\n flush_on_unload();\n }\n });\n window$1.addEventListener('visibilitychange', function() {\n if (document$1['visibilityState'] === 'hidden') {\n flush_on_unload();\n }\n });\n }\n }\n }\n\n this['persistence'] = this['cookie'] = new MixpanelPersistence(this['config']);\n this.unpersisted_superprops = {};\n this._gdpr_init();\n\n var uuid = _.UUID();\n if (!this.get_distinct_id()) {\n // There is no need to set the distinct id\n // or the device id if something was already stored\n // in the persitence\n this.register_once({\n 'distinct_id': DEVICE_ID_PREFIX + uuid,\n '$device_id': uuid\n }, '');\n }\n\n var track_pageview_option = this.get_config('track_pageview');\n if (track_pageview_option) {\n this._init_url_change_tracking(track_pageview_option);\n }\n};\n\n// Private methods\n\nMixpanelLib.prototype._loaded = function() {\n this.get_config('loaded')(this);\n this._set_default_superprops();\n this['people'].set_once(this['persistence'].get_referrer_info());\n\n // The original 'store_google' functionality will be deprecated and the config will be\n // used to clear previously managed UTM parameters from persistence.\n // stop_utm_persistence is `false` by default now but will be default `true` in the future.\n if (this.get_config('store_google') && this.get_config('stop_utm_persistence')) {\n var utm_params = _.info.campaignParams(null);\n _.each(utm_params, function(_utm_value, utm_key) {\n // We need to unregister persisted UTM parameters so old values\n // are not mixed with the new UTM parameters\n this.unregister(utm_key);\n }.bind(this));\n }\n};\n\n// update persistence with info on referrer, UTM params, etc\nMixpanelLib.prototype._set_default_superprops = function() {\n this['persistence'].update_search_keyword(document$1.referrer);\n if (this.get_config('store_google') && !this.get_config('stop_utm_persistence')) {\n this.register(_.info.campaignParams());\n }\n if (this.get_config('save_referrer')) {\n this['persistence'].update_referrer_info(document$1.referrer);\n }\n};\n\nMixpanelLib.prototype._dom_loaded = function() {\n _.each(this.__dom_loaded_queue, function(item) {\n this._track_dom.apply(this, item);\n }, this);\n\n if (!this.has_opted_out_tracking()) {\n _.each(this.__request_queue, function(item) {\n this._send_request.apply(this, item);\n }, this);\n }\n\n delete this.__dom_loaded_queue;\n delete this.__request_queue;\n};\n\nMixpanelLib.prototype._track_dom = function(DomClass, args) {\n if (this.get_config('img')) {\n this.report_error('You can\\'t use DOM tracking functions with img = true.');\n return false;\n }\n\n if (!DOM_LOADED) {\n this.__dom_loaded_queue.push([DomClass, args]);\n return false;\n }\n\n var dt = new DomClass().init(this);\n return dt.track.apply(dt, args);\n};\n\nMixpanelLib.prototype._init_url_change_tracking = function(track_pageview_option) {\n var previous_tracked_url = '';\n var tracked = this.track_pageview();\n if (tracked) {\n previous_tracked_url = _.info.currentUrl();\n }\n\n if (_.include(['full-url', 'url-with-path-and-query-string', 'url-with-path'], track_pageview_option)) {\n window$1.addEventListener('popstate', function() {\n window$1.dispatchEvent(new Event('mp_locationchange'));\n });\n window$1.addEventListener('hashchange', function() {\n window$1.dispatchEvent(new Event('mp_locationchange'));\n });\n var nativePushState = window$1.history.pushState;\n if (typeof nativePushState === 'function') {\n window$1.history.pushState = function(state, unused, url) {\n nativePushState.call(window$1.history, state, unused, url);\n window$1.dispatchEvent(new Event('mp_locationchange'));\n };\n }\n var nativeReplaceState = window$1.history.replaceState;\n if (typeof nativeReplaceState === 'function') {\n window$1.history.replaceState = function(state, unused, url) {\n nativeReplaceState.call(window$1.history, state, unused, url);\n window$1.dispatchEvent(new Event('mp_locationchange'));\n };\n }\n window$1.addEventListener('mp_locationchange', function() {\n var current_url = _.info.currentUrl();\n var should_track = false;\n if (track_pageview_option === 'full-url') {\n should_track = current_url !== previous_tracked_url;\n } else if (track_pageview_option === 'url-with-path-and-query-string') {\n should_track = current_url.split('#')[0] !== previous_tracked_url.split('#')[0];\n } else if (track_pageview_option === 'url-with-path') {\n should_track = current_url.split('#')[0].split('?')[0] !== previous_tracked_url.split('#')[0].split('?')[0];\n }\n\n if (should_track) {\n var tracked = this.track_pageview();\n if (tracked) {\n previous_tracked_url = current_url;\n }\n }\n }.bind(this));\n }\n};\n\n/**\n * _prepare_callback() should be called by callers of _send_request for use\n * as the callback argument.\n *\n * If there is no callback, this returns null.\n * If we are going to make XHR/XDR requests, this returns a function.\n * If we are going to use script tags, this returns a string to use as the\n * callback GET param.\n */\nMixpanelLib.prototype._prepare_callback = function(callback, data) {\n if (_.isUndefined(callback)) {\n return null;\n }\n\n if (USE_XHR) {\n var callback_function = function(response) {\n callback(response, data);\n };\n return callback_function;\n } else {\n // if the user gives us a callback, we store as a random\n // property on this instances jsc function and update our\n // callback string to reflect that.\n var jsc = this['_jsc'];\n var randomized_cb = '' + Math.floor(Math.random() * 100000000);\n var callback_string = this.get_config('callback_fn') + '[' + randomized_cb + ']';\n jsc[randomized_cb] = function(response) {\n delete jsc[randomized_cb];\n callback(response, data);\n };\n return callback_string;\n }\n};\n\nMixpanelLib.prototype._send_request = function(url, data, options, callback) {\n var succeeded = true;\n\n if (ENQUEUE_REQUESTS) {\n this.__request_queue.push(arguments);\n return succeeded;\n }\n\n var DEFAULT_OPTIONS = {\n method: this.get_config('api_method'),\n transport: this.get_config('api_transport'),\n verbose: this.get_config('verbose')\n };\n var body_data = null;\n\n if (!callback && (_.isFunction(options) || typeof options === 'string')) {\n callback = options;\n options = null;\n }\n options = _.extend(DEFAULT_OPTIONS, options || {});\n if (!USE_XHR) {\n options.method = 'GET';\n }\n var use_post = options.method === 'POST';\n var use_sendBeacon = sendBeacon && use_post && options.transport.toLowerCase() === 'sendbeacon';\n\n // needed to correctly format responses\n var verbose_mode = options.verbose;\n if (data['verbose']) { verbose_mode = true; }\n\n if (this.get_config('test')) { data['test'] = 1; }\n if (verbose_mode) { data['verbose'] = 1; }\n if (this.get_config('img')) { data['img'] = 1; }\n if (!USE_XHR) {\n if (callback) {\n data['callback'] = callback;\n } else if (verbose_mode || this.get_config('test')) {\n // Verbose output (from verbose mode, or an error in test mode) is a json blob,\n // which by itself is not valid javascript. Without a callback, this verbose output will\n // cause an error when returned via jsonp, so we force a no-op callback param.\n // See the ECMA script spec: http://www.ecma-international.org/ecma-262/5.1/#sec-12.4\n data['callback'] = '(function(){})';\n }\n }\n\n data['ip'] = this.get_config('ip')?1:0;\n data['_'] = new Date().getTime().toString();\n\n if (use_post) {\n body_data = 'data=' + encodeURIComponent(data['data']);\n delete data['data'];\n }\n\n url += '?' + _.HTTPBuildQuery(data);\n\n var lib = this;\n if ('img' in data) {\n var img = document$1.createElement('img');\n img.src = url;\n document$1.body.appendChild(img);\n } else if (use_sendBeacon) {\n try {\n succeeded = sendBeacon(url, body_data);\n } catch (e) {\n lib.report_error(e);\n succeeded = false;\n }\n try {\n if (callback) {\n callback(succeeded ? 1 : 0);\n }\n } catch (e) {\n lib.report_error(e);\n }\n } else if (USE_XHR) {\n try {\n var req = new XMLHttpRequest();\n req.open(options.method, url, true);\n\n var headers = this.get_config('xhr_headers');\n if (use_post) {\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\n }\n _.each(headers, function(headerValue, headerName) {\n req.setRequestHeader(headerName, headerValue);\n });\n\n if (options.timeout_ms && typeof req.timeout !== 'undefined') {\n req.timeout = options.timeout_ms;\n var start_time = new Date().getTime();\n }\n\n // send the mp_optout cookie\n // withCredentials cannot be modified until after calling .open on Android and Mobile Safari\n req.withCredentials = true;\n req.onreadystatechange = function () {\n if (req.readyState === 4) { // XMLHttpRequest.DONE == 4, except in safari 4\n if (req.status === 200) {\n if (callback) {\n if (verbose_mode) {\n var response;\n try {\n response = _.JSONDecode(req.responseText);\n } catch (e) {\n lib.report_error(e);\n if (options.ignore_json_errors) {\n response = req.responseText;\n } else {\n return;\n }\n }\n callback(response);\n } else {\n callback(Number(req.responseText));\n }\n }\n } else {\n var error;\n if (\n req.timeout &&\n !req.status &&\n new Date().getTime() - start_time >= req.timeout\n ) {\n error = 'timeout';\n } else {\n error = 'Bad HTTP status: ' + req.status + ' ' + req.statusText;\n }\n lib.report_error(error);\n if (callback) {\n if (verbose_mode) {\n callback({status: 0, error: error, xhr_req: req});\n } else {\n callback(0);\n }\n }\n }\n }\n };\n req.send(body_data);\n } catch (e) {\n lib.report_error(e);\n succeeded = false;\n }\n } else {\n var script = document$1.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n var s = document$1.getElementsByTagName('script')[0];\n s.parentNode.insertBefore(script, s);\n }\n\n return succeeded;\n};\n\n/**\n * _execute_array() deals with processing any mixpanel function\n * calls that were called before the Mixpanel library were loaded\n * (and are thus stored in an array so they can be called later)\n *\n * Note: we fire off all the mixpanel function calls && user defined\n * functions BEFORE we fire off mixpanel tracking calls. This is so\n * identify/register/set_config calls can properly modify early\n * tracking calls.\n *\n * @param {Array} array\n */\nMixpanelLib.prototype._execute_array = function(array) {\n var fn_name, alias_calls = [], other_calls = [], tracking_calls = [];\n _.each(array, function(item) {\n if (item) {\n fn_name = item[0];\n if (_.isArray(fn_name)) {\n tracking_calls.push(item); // chained call e.g. mixpanel.get_group().set()\n } else if (typeof(item) === 'function') {\n item.call(this);\n } else if (_.isArray(item) && fn_name === 'alias') {\n alias_calls.push(item);\n } else if (_.isArray(item) && fn_name.indexOf('track') !== -1 && typeof(this[fn_name]) === 'function') {\n tracking_calls.push(item);\n } else {\n other_calls.push(item);\n }\n }\n }, this);\n\n var execute = function(calls, context) {\n _.each(calls, function(item) {\n if (_.isArray(item[0])) {\n // chained call\n var caller = context;\n _.each(item, function(call) {\n caller = caller[call[0]].apply(caller, call.slice(1));\n });\n } else {\n this[item[0]].apply(this, item.slice(1));\n }\n }, context);\n };\n\n execute(alias_calls, this);\n execute(other_calls, this);\n execute(tracking_calls, this);\n};\n\n// request queueing utils\n\nMixpanelLib.prototype.are_batchers_initialized = function() {\n return !!this.request_batchers.events;\n};\n\nMixpanelLib.prototype.get_batcher_configs = function() {\n var queue_prefix = '__mpq_' + this.get_config('token');\n var api_routes = this.get_config('api_routes');\n this._batcher_configs = this._batcher_configs || {\n events: {type: 'events', endpoint: '/' + api_routes['track'], queue_key: queue_prefix + '_ev'},\n people: {type: 'people', endpoint: '/' + api_routes['engage'], queue_key: queue_prefix + '_pp'},\n groups: {type: 'groups', endpoint: '/' + api_routes['groups'], queue_key: queue_prefix + '_gr'}\n };\n return this._batcher_configs;\n};\n\nMixpanelLib.prototype.init_batchers = function() {\n if (!this.are_batchers_initialized()) {\n var batcher_for = _.bind(function(attrs) {\n return new RequestBatcher(\n attrs.queue_key,\n {\n libConfig: this['config'],\n sendRequestFunc: _.bind(function(data, options, cb) {\n this._send_request(\n this.get_config('api_host') + attrs.endpoint,\n this._encode_data_for_request(data),\n options,\n this._prepare_callback(cb, data)\n );\n }, this),\n beforeSendHook: _.bind(function(item) {\n return this._run_hook('before_send_' + attrs.type, item);\n }, this),\n errorReporter: this.get_config('error_reporter'),\n stopAllBatchingFunc: _.bind(this.stop_batch_senders, this)\n }\n );\n }, this);\n var batcher_configs = this.get_batcher_configs();\n this.request_batchers = {\n events: batcher_for(batcher_configs.events),\n people: batcher_for(batcher_configs.people),\n groups: batcher_for(batcher_configs.groups)\n };\n }\n if (this.get_config('batch_autostart')) {\n this.start_batch_senders();\n }\n};\n\nMixpanelLib.prototype.start_batch_senders = function() {\n this._batchers_were_started = true;\n if (this.are_batchers_initialized()) {\n this._batch_requests = true;\n _.each(this.request_batchers, function(batcher) {\n batcher.start();\n });\n }\n};\n\nMixpanelLib.prototype.stop_batch_senders = function() {\n this._batch_requests = false;\n _.each(this.request_batchers, function(batcher) {\n batcher.stop();\n batcher.clear();\n });\n};\n\n/**\n * push() keeps the standard async-array-push\n * behavior around after the lib is loaded.\n * This is only useful for external integrations that\n * do not wish to rely on our convenience methods\n * (created in the snippet).\n *\n * ### Usage:\n * mixpanel.push(['register', { a: 'b' }]);\n *\n * @param {Array} item A [function_name, args...] array to be executed\n */\nMixpanelLib.prototype.push = function(item) {\n this._execute_array([item]);\n};\n\n/**\n * Disable events on the Mixpanel object. If passed no arguments,\n * this function disables tracking of any event. If passed an\n * array of event names, those events will be disabled, but other\n * events will continue to be tracked.\n *\n * Note: this function does not stop other mixpanel functions from\n * firing, such as register() or people.set().\n *\n * @param {Array} [events] An array of event names to disable\n */\nMixpanelLib.prototype.disable = function(events) {\n if (typeof(events) === 'undefined') {\n this._flags.disable_all_events = true;\n } else {\n this.__disabled_events = this.__disabled_events.concat(events);\n }\n};\n\nMixpanelLib.prototype._encode_data_for_request = function(data) {\n var encoded_data = _.JSONEncode(data);\n if (this.get_config('api_payload_format') === PAYLOAD_TYPE_BASE64) {\n encoded_data = _.base64Encode(encoded_data);\n }\n return {'data': encoded_data};\n};\n\n// internal method for handling track vs batch-enqueue logic\nMixpanelLib.prototype._track_or_batch = function(options, callback) {\n var truncated_data = _.truncate(options.data, 255);\n var endpoint = options.endpoint;\n var batcher = options.batcher;\n var should_send_immediately = options.should_send_immediately;\n var send_request_options = options.send_request_options || {};\n callback = callback || NOOP_FUNC;\n\n var request_enqueued_or_initiated = true;\n var send_request_immediately = _.bind(function() {\n if (!send_request_options.skip_hooks) {\n truncated_data = this._run_hook('before_send_' + options.type, truncated_data);\n }\n if (truncated_data) {\n console.log('MIXPANEL REQUEST:');\n console.log(truncated_data);\n return this._send_request(\n endpoint,\n this._encode_data_for_request(truncated_data),\n send_request_options,\n this._prepare_callback(callback, truncated_data)\n );\n } else {\n return null;\n }\n }, this);\n\n if (this._batch_requests && !should_send_immediately) {\n batcher.enqueue(truncated_data, function(succeeded) {\n if (succeeded) {\n callback(1, truncated_data);\n } else {\n send_request_immediately();\n }\n });\n } else {\n request_enqueued_or_initiated = send_request_immediately();\n }\n\n return request_enqueued_or_initiated && truncated_data;\n};\n\n/**\n * Track an event. This is the most important and\n * frequently used Mixpanel function.\n *\n * ### Usage:\n *\n * // track an event named 'Registered'\n * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * // track an event using navigator.sendBeacon\n * mixpanel.track('Left page', {'duration_seconds': 35}, {transport: 'sendBeacon'});\n *\n * To track link clicks or form submissions, see track_links() or track_forms().\n *\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Object} [options] Optional configuration for this track request.\n * @param {String} [options.transport] Transport method for network request ('xhr' or 'sendBeacon').\n * @param {Boolean} [options.send_immediately] Whether to bypass batching/queueing and send track request immediately.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\nMixpanelLib.prototype.track = addOptOutCheckMixpanelLib(function(event_name, properties, options, callback) {\n if (!callback && typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n var transport = options['transport']; // external API, don't minify 'transport' prop\n if (transport) {\n options.transport = transport; // 'transport' prop name can be minified internally\n }\n var should_send_immediately = options['send_immediately'];\n if (typeof callback !== 'function') {\n callback = NOOP_FUNC;\n }\n\n if (_.isUndefined(event_name)) {\n this.report_error('No event name provided to mixpanel.track');\n return;\n }\n\n if (this._event_is_disabled(event_name)) {\n callback(0);\n return;\n }\n\n // set defaults\n properties = _.extend({}, properties);\n properties['token'] = this.get_config('token');\n\n // set $duration if time_event was previously called for this event\n var start_timestamp = this['persistence'].remove_event_timer(event_name);\n if (!_.isUndefined(start_timestamp)) {\n var duration_in_ms = new Date().getTime() - start_timestamp;\n properties['$duration'] = parseFloat((duration_in_ms / 1000).toFixed(3));\n }\n\n this._set_default_superprops();\n\n var marketing_properties = this.get_config('track_marketing')\n ? _.info.marketingParams()\n : {};\n\n // note: extend writes to the first object, so lets make sure we\n // don't write to the persistence properties object and info\n // properties object by passing in a new object\n\n // update properties with pageview info and super-properties\n properties = _.extend(\n {},\n _.info.properties({'mp_loader': this.get_config('mp_loader')}),\n marketing_properties,\n this['persistence'].properties(),\n this.unpersisted_superprops,\n properties\n );\n\n var property_blacklist = this.get_config('property_blacklist');\n if (_.isArray(property_blacklist)) {\n _.each(property_blacklist, function(blacklisted_prop) {\n delete properties[blacklisted_prop];\n });\n } else {\n this.report_error('Invalid value for property_blacklist config: ' + property_blacklist);\n }\n\n var data = {\n 'event': event_name,\n 'properties': properties\n };\n var ret = this._track_or_batch({\n type: 'events',\n data: data,\n endpoint: this.get_config('api_host') + '/' + this.get_config('api_routes')['track'],\n batcher: this.request_batchers.events,\n should_send_immediately: should_send_immediately,\n send_request_options: options\n }, callback);\n\n return ret;\n});\n\n/**\n * Register the current user into one/many groups.\n *\n * ### Usage:\n *\n * mixpanel.set_group('company', ['mixpanel', 'google']) // an array of IDs\n * mixpanel.set_group('company', 'mixpanel')\n * mixpanel.set_group('company', 128746312)\n *\n * @param {String} group_key Group key\n * @param {Array|String|Number} group_ids An array of group IDs, or a singular group ID\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n *\n */\nMixpanelLib.prototype.set_group = addOptOutCheckMixpanelLib(function(group_key, group_ids, callback) {\n if (!_.isArray(group_ids)) {\n group_ids = [group_ids];\n }\n var prop = {};\n prop[group_key] = group_ids;\n this.register(prop);\n return this['people'].set(group_key, group_ids, callback);\n});\n\n/**\n * Add a new group for this user.\n *\n * ### Usage:\n *\n * mixpanel.add_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.add_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n var old_values = this.get_property(group_key);\n var prop = {};\n if (old_values === undefined) {\n prop[group_key] = [group_id];\n this.register(prop);\n } else {\n if (old_values.indexOf(group_id) === -1) {\n old_values.push(group_id);\n prop[group_key] = old_values;\n this.register(prop);\n }\n }\n return this['people'].union(group_key, group_id, callback);\n});\n\n/**\n * Remove a group from this user.\n *\n * ### Usage:\n *\n * mixpanel.remove_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.remove_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n var old_value = this.get_property(group_key);\n // if the value doesn't exist, the persistent store is unchanged\n if (old_value !== undefined) {\n var idx = old_value.indexOf(group_id);\n if (idx > -1) {\n old_value.splice(idx, 1);\n this.register({group_key: old_value});\n }\n if (old_value.length === 0) {\n this.unregister(group_key);\n }\n }\n return this['people'].remove(group_key, group_id, callback);\n});\n\n/**\n * Track an event with specific groups.\n *\n * ### Usage:\n *\n * mixpanel.track_with_groups('purchase', {'product': 'iphone'}, {'University': ['UCB', 'UCLA']})\n *\n * @param {String} event_name The name of the event (see `mixpanel.track()`)\n * @param {Object=} properties A set of properties to include with the event you're sending (see `mixpanel.track()`)\n * @param {Object=} groups An object mapping group name keys to one or more values\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.track_with_groups = addOptOutCheckMixpanelLib(function(event_name, properties, groups, callback) {\n var tracking_props = _.extend({}, properties || {});\n _.each(groups, function(v, k) {\n if (v !== null && v !== undefined) {\n tracking_props[k] = v;\n }\n });\n return this.track(event_name, tracking_props, callback);\n});\n\nMixpanelLib.prototype._create_map_key = function (group_key, group_id) {\n return group_key + '_' + JSON.stringify(group_id);\n};\n\nMixpanelLib.prototype._remove_group_from_cache = function (group_key, group_id) {\n delete this._cached_groups[this._create_map_key(group_key, group_id)];\n};\n\n/**\n * Look up reference to a Mixpanel group\n *\n * ### Usage:\n *\n * mixpanel.get_group(group_key, group_id)\n *\n * @param {String} group_key Group key\n * @param {Object} group_id A valid Mixpanel property type\n * @returns {Object} A MixpanelGroup identifier\n */\nMixpanelLib.prototype.get_group = function (group_key, group_id) {\n var map_key = this._create_map_key(group_key, group_id);\n var group = this._cached_groups[map_key];\n if (group === undefined || group._group_key !== group_key || group._group_id !== group_id) {\n group = new MixpanelGroup();\n group._init(this, group_key, group_id);\n this._cached_groups[map_key] = group;\n }\n return group;\n};\n\n/**\n * Track a default Mixpanel page view event, which includes extra default event properties to\n * improve page view data.\n *\n * ### Usage:\n *\n * // track a default $mp_web_page_view event\n * mixpanel.track_pageview();\n *\n * // track a page view event with additional event properties\n * mixpanel.track_pageview({'ab_test_variant': 'card-layout-b'});\n *\n * // example approach to track page views on different page types as event properties\n * mixpanel.track_pageview({'page': 'pricing'});\n * mixpanel.track_pageview({'page': 'homepage'});\n *\n * // UNCOMMON: Tracking a page view event with a custom event_name option. NOT expected to be used for\n * // individual pages on the same site or product. Use cases for custom event_name may be page\n * // views on different products or internal applications that are considered completely separate\n * mixpanel.track_pageview({'page': 'customer-search'}, {'event_name': '[internal] Admin Page View'});\n *\n * ### Notes:\n *\n * The `config.track_pageview` option for <a href=\"#mixpanelinit\">mixpanel.init()</a>\n * may be turned on for tracking page loads automatically.\n *\n * // track only page loads\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: true});\n *\n * // track when the URL changes in any manner\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'full-url'});\n *\n * // track when the URL changes, ignoring any changes in the hash part\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'url-with-path-and-query-string'});\n *\n * // track when the path changes, ignoring any query parameter or hash changes\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'url-with-path'});\n *\n * @param {Object} [properties] An optional set of additional properties to send with the page view event\n * @param {Object} [options] Page view tracking options\n * @param {String} [options.event_name] - Alternate name for the tracking event\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\nMixpanelLib.prototype.track_pageview = addOptOutCheckMixpanelLib(function(properties, options) {\n if (typeof properties !== 'object') {\n properties = {};\n }\n options = options || {};\n var event_name = options['event_name'] || '$mp_web_page_view';\n\n var default_page_properties = _.extend(\n _.info.mpPageViewProperties(),\n _.info.campaignParams(),\n _.info.clickParams()\n );\n\n var event_properties = _.extend(\n {},\n default_page_properties,\n properties\n );\n\n return this.track(event_name, event_properties);\n});\n\n/**\n * Track clicks on a set of document elements. Selector must be a\n * valid query. Elements must exist on the page at the time track_links is called.\n *\n * ### Usage:\n *\n * // track click for link id #nav\n * mixpanel.track_links('#nav', 'Clicked Nav Link');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the Mixpanel\n * servers to respond. If they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked. To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument. You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] A properties object or function that returns a dictionary of properties when passed a DOMElement\n */\nMixpanelLib.prototype.track_links = function() {\n return this._track_dom.call(this, LinkTracker, arguments);\n};\n\n/**\n * Track form submissions. Selector must be a valid query.\n *\n * ### Usage:\n *\n * // track submission for form id 'register'\n * mixpanel.track_forms('#register', 'Created Account');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the mixpanel\n * servers to respond, if they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked. To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument. You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] This can be a set of properties, or a function that returns a set of properties after being passed a DOMElement\n */\nMixpanelLib.prototype.track_forms = function() {\n return this._track_dom.call(this, FormTracker, arguments);\n};\n\n/**\n * Time an event by including the time between this call and a\n * later 'track' call for the same event in the properties sent\n * with the event.\n *\n * ### Usage:\n *\n * // time an event named 'Registered'\n * mixpanel.time_event('Registered');\n * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * When called for a particular event name, the next track call for that event\n * name will include the elapsed time between the 'time_event' and 'track'\n * calls. This value is stored as seconds in the '$duration' property.\n *\n * @param {String} event_name The name of the event.\n */\nMixpanelLib.prototype.time_event = function(event_name) {\n if (_.isUndefined(event_name)) {\n this.report_error('No event name provided to mixpanel.time_event');\n return;\n }\n\n if (this._event_is_disabled(event_name)) {\n return;\n }\n\n this['persistence'].set_event_timer(event_name, new Date().getTime());\n};\n\nvar REGISTER_DEFAULTS = {\n 'persistent': true\n};\n/**\n * Helper to parse options param for register methods, maintaining\n * legacy support for plain \"days\" param instead of options object\n * @param {Number|Object} [days_or_options] 'days' option (Number), or Options object for register methods\n * @returns {Object} options object\n */\nvar options_for_register = function(days_or_options) {\n var options;\n if (_.isObject(days_or_options)) {\n options = days_or_options;\n } else if (!_.isUndefined(days_or_options)) {\n options = {'days': days_or_options};\n } else {\n options = {};\n }\n return _.extend({}, REGISTER_DEFAULTS, options);\n};\n\n/**\n * Register a set of super properties, which are included with all\n * events. This will overwrite previous super property values.\n *\n * ### Usage:\n *\n * // register 'Gender' as a super property\n * mixpanel.register({'Gender': 'Female'});\n *\n * // register several super properties when a user signs up\n * mixpanel.register({\n * 'Email': 'jdoe@example.com',\n * 'Account Type': 'Free'\n * });\n *\n * // register only for the current pageload\n * mixpanel.register({'Name': 'Pat'}, {persistent: false});\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register = function(props, days_or_options) {\n var options = options_for_register(days_or_options);\n if (options['persistent']) {\n this['persistence'].register(props, options['days']);\n } else {\n _.extend(this.unpersisted_superprops, props);\n }\n};\n\n/**\n * Register a set of super properties only once. This will not\n * overwrite previous super property values, unlike register().\n *\n * ### Usage:\n *\n * // register a super property for the first time only\n * mixpanel.register_once({\n * 'First Login Date': new Date().toISOString()\n * });\n *\n * // register once, only for the current pageload\n * mixpanel.register_once({\n * 'First interaction time': new Date().toISOString()\n * }, 'None', {persistent: false});\n *\n * ### Notes:\n *\n * If default_value is specified, current super properties\n * with that value will be overwritten.\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {*} [default_value] Value to override if already set in super properties (ex: 'False') Default: 'None'\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register_once = function(props, default_value, days_or_options) {\n var options = options_for_register(days_or_options);\n if (options['persistent']) {\n this['persistence'].register_once(props, default_value, options['days']);\n } else {\n if (typeof(default_value) === 'undefined') {\n default_value = 'None';\n }\n _.each(props, function(val, prop) {\n if (!this.unpersisted_superprops.hasOwnProperty(prop) || this.unpersisted_superprops[prop] === default_value) {\n this.unpersisted_superprops[prop] = val;\n }\n }, this);\n }\n};\n\n/**\n * Delete a super property stored with the current user.\n *\n * @param {String} property The name of the super property to remove\n * @param {Object} [options]\n * @param {boolean} [options.persistent=true] - whether to look in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.unregister = function(property, options) {\n options = options_for_register(options);\n if (options['persistent']) {\n this['persistence'].unregister(property);\n } else {\n delete this.unpersisted_superprops[property];\n }\n};\n\nMixpanelLib.prototype._register_single = function(prop, value) {\n var props = {};\n props[prop] = value;\n this.register(props);\n};\n\n/**\n * Identify a user with a unique ID to track user activity across\n * devices, tie a user to their events, and create a user profile.\n * If you never call this method, unique visitors are tracked using\n * a UUID generated the first time they visit the site.\n *\n * Call identify when you know the identity of the current user,\n * typically after login or signup. We recommend against using\n * identify for anonymous visitors to your site.\n *\n * ### Notes:\n * If your project has\n * <a href=\"https://help.mixpanel.com/hc/en-us/articles/360039133851\">ID Merge</a>\n * enabled, the identify method will connect pre- and\n * post-authentication events when appropriate.\n *\n * If your project does not have ID Merge enabled, identify will\n * change the user's local distinct_id to the unique ID you pass.\n * Events tracked prior to authentication will not be connected\n * to the same user identity. If ID Merge is disabled, alias can\n * be used to connect pre- and post-registration events.\n *\n * @param {String} [unique_id] A string that uniquely identifies a user. If not provided, the distinct_id currently in the persistent store (cookie or localStorage) will be used.\n */\nMixpanelLib.prototype.identify = function(\n new_distinct_id, _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n // Optional Parameters\n // _set_callback:function A callback to be run if and when the People set queue is flushed\n // _add_callback:function A callback to be run if and when the People add queue is flushed\n // _append_callback:function A callback to be run if and when the People append queue is flushed\n // _set_once_callback:function A callback to be run if and when the People set_once queue is flushed\n // _union_callback:function A callback to be run if and when the People union queue is flushed\n // _unset_callback:function A callback to be run if and when the People unset queue is flushed\n\n var previous_distinct_id = this.get_distinct_id();\n if (new_distinct_id && previous_distinct_id !== new_distinct_id) {\n // we allow the following condition if previous distinct_id is same as new_distinct_id\n // so that you can force flush people updates for anonymous profiles.\n if (typeof new_distinct_id === 'string' && new_distinct_id.indexOf(DEVICE_ID_PREFIX) === 0) {\n this.report_error('distinct_id cannot have $device: prefix');\n return -1;\n }\n this.register({'$user_id': new_distinct_id});\n }\n\n if (!this.get_property('$device_id')) {\n // The persisted distinct id might not actually be a device id at all\n // it might be a distinct id of the user from before\n var device_id = previous_distinct_id;\n this.register_once({\n '$had_persisted_distinct_id': true,\n '$device_id': device_id\n }, '');\n }\n\n // identify only changes the distinct id if it doesn't match either the existing or the alias;\n // if it's new, blow away the alias as well.\n if (new_distinct_id !== previous_distinct_id && new_distinct_id !== this.get_property(ALIAS_ID_KEY)) {\n this.unregister(ALIAS_ID_KEY);\n this.register({'distinct_id': new_distinct_id});\n }\n this._flags.identify_called = true;\n // Flush any queued up people requests\n this['people']._flush(_set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback);\n\n // send an $identify event any time the distinct_id is changing - logic on the server\n // will determine whether or not to do anything with it.\n if (new_distinct_id !== previous_distinct_id) {\n this.track('$identify', {\n 'distinct_id': new_distinct_id,\n '$anon_distinct_id': previous_distinct_id\n }, {skip_hooks: true});\n }\n};\n\n/**\n * Clears super properties and generates a new random distinct_id for this instance.\n * Useful for clearing data when a user logs out.\n */\nMixpanelLib.prototype.reset = function() {\n this['persistence'].clear();\n this._flags.identify_called = false;\n var uuid = _.UUID();\n this.register_once({\n 'distinct_id': DEVICE_ID_PREFIX + uuid,\n '$device_id': uuid\n }, '');\n};\n\n/**\n * Returns the current distinct id of the user. This is either the id automatically\n * generated by the library or the id that has been passed by a call to identify().\n *\n * ### Notes:\n *\n * get_distinct_id() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // set distinct_id after the mixpanel library has loaded\n * mixpanel.init('YOUR PROJECT TOKEN', {\n * loaded: function(mixpanel) {\n * distinct_id = mixpanel.get_distinct_id();\n * }\n * });\n */\nMixpanelLib.prototype.get_distinct_id = function() {\n return this.get_property('distinct_id');\n};\n\n/**\n * The alias method creates an alias which Mixpanel will use to\n * remap one id to another. Multiple aliases can point to the\n * same identifier.\n *\n * The following is a valid use of alias:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // You can add multiple id aliases to the existing ID\n * mixpanel.alias('newer_id', 'existing_id');\n *\n * Aliases can also be chained - the following is a valid example:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // chain newer_id - new_id - existing_id\n * mixpanel.alias('newer_id', 'new_id');\n *\n * Aliases cannot point to multiple identifiers - the following\n * example will not work:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // this is invalid as 'new_id' already points to 'existing_id'\n * mixpanel.alias('new_id', 'newer_id');\n *\n * ### Notes:\n *\n * If your project does not have\n * <a href=\"https://help.mixpanel.com/hc/en-us/articles/360039133851\">ID Merge</a>\n * enabled, the best practice is to call alias once when a unique\n * ID is first created for a user (e.g., when a user first registers\n * for an account). Do not use alias multiple times for a single\n * user without ID Merge enabled.\n *\n * @param {String} alias A unique identifier that you want to use for this user in the future.\n * @param {String} [original] The current identifier being used for this user.\n */\nMixpanelLib.prototype.alias = function(alias, original) {\n // If the $people_distinct_id key exists in persistence, there has been a previous\n // mixpanel.people.identify() call made for this user. It is VERY BAD to make an alias with\n // this ID, as it will duplicate users.\n if (alias === this.get_property(PEOPLE_DISTINCT_ID_KEY)) {\n this.report_error('Attempting to create alias for existing People user - aborting.');\n return -2;\n }\n\n var _this = this;\n if (_.isUndefined(original)) {\n original = this.get_distinct_id();\n }\n if (alias !== original) {\n this._register_single(ALIAS_ID_KEY, alias);\n return this.track('$create_alias', {\n 'alias': alias,\n 'distinct_id': original\n }, {\n skip_hooks: true\n }, function() {\n // Flush the people queue\n _this.identify(alias);\n });\n } else {\n this.report_error('alias matches current distinct_id - skipping api call.');\n this.identify(alias);\n return -1;\n }\n};\n\n/**\n * Provide a string to recognize the user by. The string passed to\n * this method will appear in the Mixpanel Streams product rather\n * than an automatically generated name. Name tags do not have to\n * be unique.\n *\n * This value will only be included in Streams data.\n *\n * @param {String} name_tag A human readable name for the user\n * @deprecated\n */\nMixpanelLib.prototype.name_tag = function(name_tag) {\n this._register_single('mp_name_tag', name_tag);\n};\n\n/**\n * Update the configuration of a mixpanel library instance.\n *\n * The default config is:\n *\n * {\n * // host for requests (customizable for e.g. a local proxy)\n * api_host: 'https://api-js.mixpanel.com',\n *\n * // endpoints for different types of requests\n * api_routes: {\n * track: 'track/',\n * engage: 'engage/',\n * groups: 'groups/',\n * }\n *\n * // HTTP method for tracking requests\n * api_method: 'POST'\n *\n * // transport for sending requests ('XHR' or 'sendBeacon')\n * // NB: sendBeacon should only be used for scenarios such as\n * // page unload where a \"best-effort\" attempt to send is\n * // acceptable; the sendBeacon API does not support callbacks\n * // or any way to know the result of the request. Mixpanel\n * // tracking via sendBeacon will not support any event-\n * // batching or retry mechanisms.\n * api_transport: 'XHR'\n *\n * // request-batching/queueing/retry\n * batch_requests: true,\n *\n * // maximum number of events/updates to send in a single\n * // network request\n * batch_size: 50,\n *\n * // milliseconds to wait between sending batch requests\n * batch_flush_interval_ms: 5000,\n *\n * // milliseconds to wait for network responses to batch requests\n * // before they are considered timed-out and retried\n * batch_request_timeout_ms: 90000,\n *\n * // override value for cookie domain, only useful for ensuring\n * // correct cross-subdomain cookies on unusual domains like\n * // subdomain.mainsite.avocat.fr; NB this cannot be used to\n * // set cookies on a different domain than the current origin\n * cookie_domain: ''\n *\n * // super properties cookie expiration (in days)\n * cookie_expiration: 365\n *\n * // if true, cookie will be set with SameSite=None; Secure\n * // this is only useful in special situations, like embedded\n * // 3rd-party iframes that set up a Mixpanel instance\n * cross_site_cookie: false\n *\n * // super properties span subdomains\n * cross_subdomain_cookie: true\n *\n * // debug mode\n * debug: false\n *\n * // if this is true, the mixpanel cookie or localStorage entry\n * // will be deleted, and no user persistence will take place\n * disable_persistence: false\n *\n * // if this is true, Mixpanel will automatically determine\n * // City, Region and Country data using the IP address of\n * //the client\n * ip: true\n *\n * // opt users out of tracking by this Mixpanel instance by default\n * opt_out_tracking_by_default: false\n *\n * // opt users out of browser data storage by this Mixpanel instance by default\n * opt_out_persistence_by_default: false\n *\n * // persistence mechanism used by opt-in/opt-out methods - cookie\n * // or localStorage - falls back to cookie if localStorage is unavailable\n * opt_out_tracking_persistence_type: 'localStorage'\n *\n * // customize the name of cookie/localStorage set by opt-in/opt-out methods\n * opt_out_tracking_cookie_prefix: null\n *\n * // type of persistent store for super properties (cookie/\n * // localStorage) if set to 'localStorage', any existing\n * // mixpanel cookie value with the same persistence_name\n * // will be transferred to localStorage and deleted\n * persistence: 'cookie'\n *\n * // name for super properties persistent store\n * persistence_name: ''\n *\n * // names of properties/superproperties which should never\n * // be sent with track() calls\n * property_blacklist: []\n *\n * // if this is true, mixpanel cookies will be marked as\n * // secure, meaning they will only be transmitted over https\n * secure_cookie: false\n *\n * // disables enriching user profiles with first touch marketing data\n * skip_first_touch_marketing: false\n *\n * // the amount of time track_links will\n * // wait for Mixpanel's servers to respond\n * track_links_timeout: 300\n *\n * // adds any UTM parameters and click IDs present on the page to any events fired\n * track_marketing: true\n *\n * // enables automatic page view tracking using default page view events through\n * // the track_pageview() method\n * track_pageview: false\n *\n * // if you set upgrade to be true, the library will check for\n * // a cookie from our old js library and import super\n * // properties from it, then the old cookie is deleted\n * // The upgrade config option only works in the initialization,\n * // so make sure you set it when you create the library.\n * upgrade: false\n *\n * // extra HTTP request headers to set for each API request, in\n * // the format {'Header-Name': value}\n * xhr_headers: {}\n *\n * // whether to ignore or respect the web browser's Do Not Track setting\n * ignore_dnt: false\n * }\n *\n *\n * @param {Object} config A dictionary of new configuration values to update\n */\nMixpanelLib.prototype.set_config = function(config) {\n if (_.isObject(config)) {\n _.extend(this['config'], config);\n\n var new_batch_size = config['batch_size'];\n if (new_batch_size) {\n _.each(this.request_batchers, function(batcher) {\n batcher.resetBatchSize();\n });\n }\n\n if (!this.get_config('persistence_name')) {\n this['config']['persistence_name'] = this['config']['cookie_name'];\n }\n if (!this.get_config('disable_persistence')) {\n this['config']['disable_persistence'] = this['config']['disable_cookie'];\n }\n\n if (this['persistence']) {\n this['persistence'].update_config(this['config']);\n }\n Config.DEBUG = Config.DEBUG || this.get_config('debug');\n }\n};\n\n/**\n * returns the current config object for the library.\n */\nMixpanelLib.prototype.get_config = function(prop_name) {\n return this['config'][prop_name];\n};\n\n/**\n * Fetch a hook function from config, with safe default, and run it\n * against the given arguments\n * @param {string} hook_name which hook to retrieve\n * @returns {any|null} return value of user-provided hook, or null if nothing was returned\n */\nMixpanelLib.prototype._run_hook = function(hook_name) {\n var ret = (this['config']['hooks'][hook_name] || IDENTITY_FUNC).apply(this, slice.call(arguments, 1));\n if (typeof ret === 'undefined') {\n this.report_error(hook_name + ' hook did not return a value');\n ret = null;\n }\n return ret;\n};\n\n/**\n * Returns the value of the super property named property_name. If no such\n * property is set, get_property() will return the undefined value.\n *\n * ### Notes:\n *\n * get_property() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // grab value for 'user_id' after the mixpanel library has loaded\n * mixpanel.init('YOUR PROJECT TOKEN', {\n * loaded: function(mixpanel) {\n * user_id = mixpanel.get_property('user_id');\n * }\n * });\n *\n * @param {String} property_name The name of the super property you want to retrieve\n */\nMixpanelLib.prototype.get_property = function(property_name) {\n return this['persistence'].load_prop([property_name]);\n};\n\nMixpanelLib.prototype.toString = function() {\n var name = this.get_config('name');\n if (name !== PRIMARY_INSTANCE_NAME) {\n name = PRIMARY_INSTANCE_NAME + '.' + name;\n }\n return name;\n};\n\nMixpanelLib.prototype._event_is_disabled = function(event_name) {\n return _.isBlockedUA(userAgent) ||\n this._flags.disable_all_events ||\n _.include(this.__disabled_events, event_name);\n};\n\n// perform some housekeeping around GDPR opt-in/out state\nMixpanelLib.prototype._gdpr_init = function() {\n var is_localStorage_requested = this.get_config('opt_out_tracking_persistence_type') === 'localStorage';\n\n // try to convert opt-in/out cookies to localStorage if possible\n if (is_localStorage_requested && _.localStorage.is_supported()) {\n if (!this.has_opted_in_tracking() && this.has_opted_in_tracking({'persistence_type': 'cookie'})) {\n this.opt_in_tracking({'enable_persistence': false});\n }\n if (!this.has_opted_out_tracking() && this.has_opted_out_tracking({'persistence_type': 'cookie'})) {\n this.opt_out_tracking({'clear_persistence': false});\n }\n this.clear_opt_in_out_tracking({\n 'persistence_type': 'cookie',\n 'enable_persistence': false\n });\n }\n\n // check whether the user has already opted out - if so, clear & disable persistence\n if (this.has_opted_out_tracking()) {\n this._gdpr_update_persistence({'clear_persistence': true});\n\n // check whether we should opt out by default\n // note: we don't clear persistence here by default since opt-out default state is often\n // used as an initial state while GDPR information is being collected\n } else if (!this.has_opted_in_tracking() && (\n this.get_config('opt_out_tracking_by_default') || _.cookie.get('mp_optout')\n )) {\n _.cookie.remove('mp_optout');\n this.opt_out_tracking({\n 'clear_persistence': this.get_config('opt_out_persistence_by_default')\n });\n }\n};\n\n/**\n * Enable or disable persistence based on options\n * only enable/disable if persistence is not already in this state\n * @param {boolean} [options.clear_persistence] If true, will delete all data stored by the sdk in persistence and disable it\n * @param {boolean} [options.enable_persistence] If true, will re-enable sdk persistence\n */\nMixpanelLib.prototype._gdpr_update_persistence = function(options) {\n var disabled;\n if (options && options['clear_persistence']) {\n disabled = true;\n } else if (options && options['enable_persistence']) {\n disabled = false;\n } else {\n return;\n }\n\n if (!this.get_config('disable_persistence') && this['persistence'].disabled !== disabled) {\n this['persistence'].set_disabled(disabled);\n }\n\n if (disabled) {\n this.stop_batch_senders();\n } else {\n // only start batchers after opt-in if they have previously been started\n // in order to avoid unintentionally starting up batching for the first time\n if (this._batchers_were_started) {\n this.start_batch_senders();\n }\n }\n};\n\n// call a base gdpr function after constructing the appropriate token and options args\nMixpanelLib.prototype._gdpr_call_func = function(func, options) {\n options = _.extend({\n 'track': _.bind(this.track, this),\n 'persistence_type': this.get_config('opt_out_tracking_persistence_type'),\n 'cookie_prefix': this.get_config('opt_out_tracking_cookie_prefix'),\n 'cookie_expiration': this.get_config('cookie_expiration'),\n 'cross_site_cookie': this.get_config('cross_site_cookie'),\n 'cross_subdomain_cookie': this.get_config('cross_subdomain_cookie'),\n 'cookie_domain': this.get_config('cookie_domain'),\n 'secure_cookie': this.get_config('secure_cookie'),\n 'ignore_dnt': this.get_config('ignore_dnt')\n }, options);\n\n // check if localStorage can be used for recording opt out status, fall back to cookie if not\n if (!_.localStorage.is_supported()) {\n options['persistence_type'] = 'cookie';\n }\n\n return func(this.get_config('token'), {\n track: options['track'],\n trackEventName: options['track_event_name'],\n trackProperties: options['track_properties'],\n persistenceType: options['persistence_type'],\n persistencePrefix: options['cookie_prefix'],\n cookieDomain: options['cookie_domain'],\n cookieExpiration: options['cookie_expiration'],\n crossSiteCookie: options['cross_site_cookie'],\n crossSubdomainCookie: options['cross_subdomain_cookie'],\n secureCookie: options['secure_cookie'],\n ignoreDnt: options['ignore_dnt']\n });\n};\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // opt user in\n * mixpanel.opt_in_tracking();\n *\n * // opt user in with specific event name, properties, cookie configuration\n * mixpanel.opt_in_tracking({\n * track_event_name: 'User opted in',\n * track_event_properties: {\n * 'Email': 'jdoe@example.com'\n * },\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {function} [options.track] Function used for tracking a Mixpanel event to record the opt-in action (default is this Mixpanel instance's track method)\n * @param {string} [options.track_event_name=$opt_in] Event name to be used for tracking the opt-in action\n * @param {Object} [options.track_properties] Set of properties to be tracked along with the opt-in action\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_in_tracking = function(options) {\n options = _.extend({\n 'enable_persistence': true\n }, options);\n\n this._gdpr_call_func(optIn, options);\n this._gdpr_update_persistence(options);\n};\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // opt user out\n * mixpanel.opt_out_tracking();\n *\n * // opt user out with different cookie configuration from Mixpanel instance\n * mixpanel.opt_out_tracking({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.delete_user=true] If true, will delete the currently identified user's profile and clear all charges after opting the user out\n * @param {boolean} [options.clear_persistence=true] If true, will delete all data stored by the sdk in persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_out_tracking = function(options) {\n options = _.extend({\n 'clear_persistence': true,\n 'delete_user': true\n }, options);\n\n // delete user and clear charges since these methods may be disabled by opt-out\n if (options['delete_user'] && this['people'] && this['people']._identify_called()) {\n this['people'].delete_user();\n this['people'].clear_charges();\n }\n\n this._gdpr_call_func(optOut, options);\n this._gdpr_update_persistence(options);\n};\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * var has_opted_in = mixpanel.has_opted_in_tracking();\n * // use has_opted_in value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-in status\n */\nMixpanelLib.prototype.has_opted_in_tracking = function(options) {\n return this._gdpr_call_func(hasOptedIn, options);\n};\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * var has_opted_out = mixpanel.has_opted_out_tracking();\n * // use has_opted_out value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-out status\n */\nMixpanelLib.prototype.has_opted_out_tracking = function(options) {\n return this._gdpr_call_func(hasOptedOut, options);\n};\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // clear user's opt-in/out status\n * mixpanel.clear_opt_in_out_tracking();\n *\n * // clear user's opt-in/out status with specific cookie configuration - should match\n * // configuration used when opt_in_tracking/opt_out_tracking methods were called.\n * mixpanel.clear_opt_in_out_tracking({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.clear_opt_in_out_tracking = function(options) {\n options = _.extend({\n 'enable_persistence': true\n }, options);\n\n this._gdpr_call_func(clearOptInOut, options);\n this._gdpr_update_persistence(options);\n};\n\nMixpanelLib.prototype.report_error = function(msg, err) {\n console.error.apply(console.error, arguments);\n try {\n if (!err && !(msg instanceof Error)) {\n msg = new Error(msg);\n }\n this.get_config('error_reporter')(msg, err);\n } catch(err) {\n console.error(err);\n }\n};\n\n// EXPORTS (for closure compiler)\n\n// MixpanelLib Exports\nMixpanelLib.prototype['init'] = MixpanelLib.prototype.init;\nMixpanelLib.prototype['reset'] = MixpanelLib.prototype.reset;\nMixpanelLib.prototype['disable'] = MixpanelLib.prototype.disable;\nMixpanelLib.prototype['time_event'] = MixpanelLib.prototype.time_event;\nMixpanelLib.prototype['track'] = MixpanelLib.prototype.track;\nMixpanelLib.prototype['track_links'] = MixpanelLib.prototype.track_links;\nMixpanelLib.prototype['track_forms'] = MixpanelLib.prototype.track_forms;\nMixpanelLib.prototype['track_pageview'] = MixpanelLib.prototype.track_pageview;\nMixpanelLib.prototype['register'] = MixpanelLib.prototype.register;\nMixpanelLib.prototype['register_once'] = MixpanelLib.prototype.register_once;\nMixpanelLib.prototype['unregister'] = MixpanelLib.prototype.unregister;\nMixpanelLib.prototype['identify'] = MixpanelLib.prototype.identify;\nMixpanelLib.prototype['alias'] = MixpanelLib.prototype.alias;\nMixpanelLib.prototype['name_tag'] = MixpanelLib.prototype.name_tag;\nMixpanelLib.prototype['set_config'] = MixpanelLib.prototype.set_config;\nMixpanelLib.prototype['get_config'] = MixpanelLib.prototype.get_config;\nMixpanelLib.prototype['get_property'] = MixpanelLib.prototype.get_property;\nMixpanelLib.prototype['get_distinct_id'] = MixpanelLib.prototype.get_distinct_id;\nMixpanelLib.prototype['toString'] = MixpanelLib.prototype.toString;\nMixpanelLib.prototype['opt_out_tracking'] = MixpanelLib.prototype.opt_out_tracking;\nMixpanelLib.prototype['opt_in_tracking'] = MixpanelLib.prototype.opt_in_tracking;\nMixpanelLib.prototype['has_opted_out_tracking'] = MixpanelLib.prototype.has_opted_out_tracking;\nMixpanelLib.prototype['has_opted_in_tracking'] = MixpanelLib.prototype.has_opted_in_tracking;\nMixpanelLib.prototype['clear_opt_in_out_tracking'] = MixpanelLib.prototype.clear_opt_in_out_tracking;\nMixpanelLib.prototype['get_group'] = MixpanelLib.prototype.get_group;\nMixpanelLib.prototype['set_group'] = MixpanelLib.prototype.set_group;\nMixpanelLib.prototype['add_group'] = MixpanelLib.prototype.add_group;\nMixpanelLib.prototype['remove_group'] = MixpanelLib.prototype.remove_group;\nMixpanelLib.prototype['track_with_groups'] = MixpanelLib.prototype.track_with_groups;\nMixpanelLib.prototype['start_batch_senders'] = MixpanelLib.prototype.start_batch_senders;\nMixpanelLib.prototype['stop_batch_senders'] = MixpanelLib.prototype.stop_batch_senders;\nMixpanelLib.prototype['DEFAULT_API_ROUTES'] = DEFAULT_API_ROUTES;\n\n// MixpanelPersistence Exports\nMixpanelPersistence.prototype['properties'] = MixpanelPersistence.prototype.properties;\nMixpanelPersistence.prototype['update_search_keyword'] = MixpanelPersistence.prototype.update_search_keyword;\nMixpanelPersistence.prototype['update_referrer_info'] = MixpanelPersistence.prototype.update_referrer_info;\nMixpanelPersistence.prototype['get_cross_subdomain'] = MixpanelPersistence.prototype.get_cross_subdomain;\nMixpanelPersistence.prototype['clear'] = MixpanelPersistence.prototype.clear;\n\n\nvar instances = {};\nvar extend_mp = function() {\n // add all the sub mixpanel instances\n _.each(instances, function(instance, name) {\n if (name !== PRIMARY_INSTANCE_NAME) { mixpanel_master[name] = instance; }\n });\n\n // add private functions as _\n mixpanel_master['_'] = _;\n};\n\nvar override_mp_init_func = function() {\n // we override the snippets init function to handle the case where a\n // user initializes the mixpanel library after the script loads & runs\n mixpanel_master['init'] = function(token, config, name) {\n if (name) {\n // initialize a sub library\n if (!mixpanel_master[name]) {\n mixpanel_master[name] = instances[name] = create_mplib(token, config, name);\n mixpanel_master[name]._loaded();\n }\n return mixpanel_master[name];\n } else {\n var instance = mixpanel_master;\n\n if (instances[PRIMARY_INSTANCE_NAME]) {\n // main mixpanel lib already initialized\n instance = instances[PRIMARY_INSTANCE_NAME];\n } else if (token) {\n // intialize the main mixpanel lib\n instance = create_mplib(token, config, PRIMARY_INSTANCE_NAME);\n instance._loaded();\n instances[PRIMARY_INSTANCE_NAME] = instance;\n }\n\n mixpanel_master = instance;\n if (init_type === INIT_SNIPPET) {\n window$1[PRIMARY_INSTANCE_NAME] = mixpanel_master;\n }\n extend_mp();\n }\n };\n};\n\nvar add_dom_loaded_handler = function() {\n // Cross browser DOM Loaded support\n function dom_loaded_handler() {\n // function flag since we only want to execute this once\n if (dom_loaded_handler.done) { return; }\n dom_loaded_handler.done = true;\n\n DOM_LOADED = true;\n ENQUEUE_REQUESTS = false;\n\n _.each(instances, function(inst) {\n inst._dom_loaded();\n });\n }\n\n function do_scroll_check() {\n try {\n document$1.documentElement.doScroll('left');\n } catch(e) {\n setTimeout(do_scroll_check, 1);\n return;\n }\n\n dom_loaded_handler();\n }\n\n if (document$1.addEventListener) {\n if (document$1.readyState === 'complete') {\n // safari 4 can fire the DOMContentLoaded event before loading all\n // external JS (including this file). you will see some copypasta\n // on the internet that checks for 'complete' and 'loaded', but\n // 'loaded' is an IE thing\n dom_loaded_handler();\n } else {\n document$1.addEventListener('DOMContentLoaded', dom_loaded_handler, false);\n }\n } else if (document$1.attachEvent) {\n // IE\n document$1.attachEvent('onreadystatechange', dom_loaded_handler);\n\n // check to make sure we arn't in a frame\n var toplevel = false;\n try {\n toplevel = window$1.frameElement === null;\n } catch(e) {\n // noop\n }\n\n if (document$1.documentElement.doScroll && toplevel) {\n do_scroll_check();\n }\n }\n\n // fallback handler, always will work\n _.register_event(window$1, 'load', dom_loaded_handler, true);\n};\n\nfunction init_as_module() {\n init_type = INIT_MODULE;\n mixpanel_master = new MixpanelLib();\n\n override_mp_init_func();\n mixpanel_master['init']();\n add_dom_loaded_handler();\n\n return mixpanel_master;\n}\n\nvar mixpanel = init_as_module();\n\nmodule.exports = mixpanel;","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","export default (function (value) {\n return typeof Map !== 'undefined' && value instanceof Map;\n});","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","/*!\n * Platform.js v1.3.6\n * Copyright 2014-2020 Benjamin Tan\n * Copyright 2011-2013 John-David Dalton\n * Available under MIT license\n */\n;(function() {\n 'use strict';\n\n /** Used to determine if values are of the language type `Object`. */\n var objectTypes = {\n 'function': true,\n 'object': true\n };\n\n /** Used as a reference to the global object. */\n var root = (objectTypes[typeof window] && window) || this;\n\n /** Backup possible global object. */\n var oldRoot = root;\n\n /** Detect free variable `exports`. */\n var freeExports = objectTypes[typeof exports] && exports;\n\n /** Detect free variable `module`. */\n var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\n /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */\n var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\n if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\n root = freeGlobal;\n }\n\n /**\n * Used as the maximum length of an array-like object.\n * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)\n * for more details.\n */\n var maxSafeInteger = Math.pow(2, 53) - 1;\n\n /** Regular expression to detect Opera. */\n var reOpera = /\\bOpera/;\n\n /** Possible global object. */\n var thisBinding = this;\n\n /** Used for native method references. */\n var objectProto = Object.prototype;\n\n /** Used to check for own properties of an object. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to resolve the internal `[[Class]]` of values. */\n var toString = objectProto.toString;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Capitalizes a string value.\n *\n * @private\n * @param {string} string The string to capitalize.\n * @returns {string} The capitalized string.\n */\n function capitalize(string) {\n string = String(string);\n return string.charAt(0).toUpperCase() + string.slice(1);\n }\n\n /**\n * A utility function to clean up the OS name.\n *\n * @private\n * @param {string} os The OS name to clean up.\n * @param {string} [pattern] A `RegExp` pattern matching the OS name.\n * @param {string} [label] A label for the OS.\n */\n function cleanupOS(os, pattern, label) {\n // Platform tokens are defined at:\n // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n var data = {\n '10.0': '10',\n '6.4': '10 Technical Preview',\n '6.3': '8.1',\n '6.2': '8',\n '6.1': 'Server 2008 R2 / 7',\n '6.0': 'Server 2008 / Vista',\n '5.2': 'Server 2003 / XP 64-bit',\n '5.1': 'XP',\n '5.01': '2000 SP1',\n '5.0': '2000',\n '4.0': 'NT',\n '4.90': 'ME'\n };\n // Detect Windows version from platform tokens.\n if (pattern && label && /^Win/i.test(os) && !/^Windows Phone /i.test(os) &&\n (data = data[/[\\d.]+$/.exec(os)])) {\n os = 'Windows ' + data;\n }\n // Correct character case and cleanup string.\n os = String(os);\n\n if (pattern && label) {\n os = os.replace(RegExp(pattern, 'i'), label);\n }\n\n os = format(\n os.replace(/ ce$/i, ' CE')\n .replace(/\\bhpw/i, 'web')\n .replace(/\\bMacintosh\\b/, 'Mac OS')\n .replace(/_PowerPC\\b/i, ' OS')\n .replace(/\\b(OS X) [^ \\d]+/i, '$1')\n .replace(/\\bMac (OS X)\\b/, '$1')\n .replace(/\\/(\\d)/, ' $1')\n .replace(/_/g, '.')\n .replace(/(?: BePC|[ .]*fc[ \\d.]+)$/i, '')\n .replace(/\\bx86\\.64\\b/gi, 'x86_64')\n .replace(/\\b(Windows Phone) OS\\b/, '$1')\n .replace(/\\b(Chrome OS \\w+) [\\d.]+\\b/, '$1')\n .split(' on ')[0]\n );\n\n return os;\n }\n\n /**\n * An iteration utility for arrays and objects.\n *\n * @private\n * @param {Array|Object} object The object to iterate over.\n * @param {Function} callback The function called per iteration.\n */\n function each(object, callback) {\n var index = -1,\n length = object ? object.length : 0;\n\n if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) {\n while (++index < length) {\n callback(object[index], index, object);\n }\n } else {\n forOwn(object, callback);\n }\n }\n\n /**\n * Trim and conditionally capitalize string values.\n *\n * @private\n * @param {string} string The string to format.\n * @returns {string} The formatted string.\n */\n function format(string) {\n string = trim(string);\n return /^(?:webOS|i(?:OS|P))/.test(string)\n ? string\n : capitalize(string);\n }\n\n /**\n * Iterates over an object's own properties, executing the `callback` for each.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} callback The function executed per own property.\n */\n function forOwn(object, callback) {\n for (var key in object) {\n if (hasOwnProperty.call(object, key)) {\n callback(object[key], key, object);\n }\n }\n }\n\n /**\n * Gets the internal `[[Class]]` of a value.\n *\n * @private\n * @param {*} value The value.\n * @returns {string} The `[[Class]]`.\n */\n function getClassOf(value) {\n return value == null\n ? capitalize(value)\n : toString.call(value).slice(8, -1);\n }\n\n /**\n * Host objects can return type values that are different from their actual\n * data type. The objects we are concerned with usually return non-primitive\n * types of \"object\", \"function\", or \"unknown\".\n *\n * @private\n * @param {*} object The owner of the property.\n * @param {string} property The property to check.\n * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`.\n */\n function isHostType(object, property) {\n var type = object != null ? typeof object[property] : 'number';\n return !/^(?:boolean|number|string|undefined)$/.test(type) &&\n (type == 'object' ? !!object[property] : true);\n }\n\n /**\n * Prepares a string for use in a `RegExp` by making hyphens and spaces optional.\n *\n * @private\n * @param {string} string The string to qualify.\n * @returns {string} The qualified string.\n */\n function qualify(string) {\n return String(string).replace(/([ -])(?!$)/g, '$1?');\n }\n\n /**\n * A bare-bones `Array#reduce` like utility function.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function called per iteration.\n * @returns {*} The accumulated result.\n */\n function reduce(array, callback) {\n var accumulator = null;\n each(array, function(value, index) {\n accumulator = callback(accumulator, value, index, array);\n });\n return accumulator;\n }\n\n /**\n * Removes leading and trailing whitespace from a string.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} The trimmed string.\n */\n function trim(string) {\n return String(string).replace(/^ +| +$/g, '');\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Creates a new platform object.\n *\n * @memberOf platform\n * @param {Object|string} [ua=navigator.userAgent] The user agent string or\n * context object.\n * @returns {Object} A platform object.\n */\n function parse(ua) {\n\n /** The environment context object. */\n var context = root;\n\n /** Used to flag when a custom context is provided. */\n var isCustomContext = ua && typeof ua == 'object' && getClassOf(ua) != 'String';\n\n // Juggle arguments.\n if (isCustomContext) {\n context = ua;\n ua = null;\n }\n\n /** Browser navigator object. */\n var nav = context.navigator || {};\n\n /** Browser user agent string. */\n var userAgent = nav.userAgent || '';\n\n ua || (ua = userAgent);\n\n /** Used to flag when `thisBinding` is the [ModuleScope]. */\n var isModuleScope = isCustomContext || thisBinding == oldRoot;\n\n /** Used to detect if browser is like Chrome. */\n var likeChrome = isCustomContext\n ? !!nav.likeChrome\n : /\\bChrome\\b/.test(ua) && !/internal|\\n/i.test(toString.toString());\n\n /** Internal `[[Class]]` value shortcuts. */\n var objectClass = 'Object',\n airRuntimeClass = isCustomContext ? objectClass : 'ScriptBridgingProxyObject',\n enviroClass = isCustomContext ? objectClass : 'Environment',\n javaClass = (isCustomContext && context.java) ? 'JavaPackage' : getClassOf(context.java),\n phantomClass = isCustomContext ? objectClass : 'RuntimeObject';\n\n /** Detect Java environments. */\n var java = /\\bJava/.test(javaClass) && context.java;\n\n /** Detect Rhino. */\n var rhino = java && getClassOf(context.environment) == enviroClass;\n\n /** A character to represent alpha. */\n var alpha = java ? 'a' : '\\u03b1';\n\n /** A character to represent beta. */\n var beta = java ? 'b' : '\\u03b2';\n\n /** Browser document object. */\n var doc = context.document || {};\n\n /**\n * Detect Opera browser (Presto-based).\n * http://www.howtocreate.co.uk/operaStuff/operaObject.html\n * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini\n */\n var opera = context.operamini || context.opera;\n\n /** Opera `[[Class]]`. */\n var operaClass = reOpera.test(operaClass = (isCustomContext && opera) ? opera['[[Class]]'] : getClassOf(opera))\n ? operaClass\n : (opera = null);\n\n /*------------------------------------------------------------------------*/\n\n /** Temporary variable used over the script's lifetime. */\n var data;\n\n /** The CPU architecture. */\n var arch = ua;\n\n /** Platform description array. */\n var description = [];\n\n /** Platform alpha/beta indicator. */\n var prerelease = null;\n\n /** A flag to indicate that environment features should be used to resolve the platform. */\n var useFeatures = ua == userAgent;\n\n /** The browser/environment version. */\n var version = useFeatures && opera && typeof opera.version == 'function' && opera.version();\n\n /** A flag to indicate if the OS ends with \"/ Version\" */\n var isSpecialCasedOS;\n\n /* Detectable layout engines (order is important). */\n var layout = getLayout([\n { 'label': 'EdgeHTML', 'pattern': 'Edge' },\n 'Trident',\n { 'label': 'WebKit', 'pattern': 'AppleWebKit' },\n 'iCab',\n 'Presto',\n 'NetFront',\n 'Tasman',\n 'KHTML',\n 'Gecko'\n ]);\n\n /* Detectable browser names (order is important). */\n var name = getName([\n 'Adobe AIR',\n 'Arora',\n 'Avant Browser',\n 'Breach',\n 'Camino',\n 'Electron',\n 'Epiphany',\n 'Fennec',\n 'Flock',\n 'Galeon',\n 'GreenBrowser',\n 'iCab',\n 'Iceweasel',\n 'K-Meleon',\n 'Konqueror',\n 'Lunascape',\n 'Maxthon',\n { 'label': 'Microsoft Edge', 'pattern': '(?:Edge|Edg|EdgA|EdgiOS)' },\n 'Midori',\n 'Nook Browser',\n 'PaleMoon',\n 'PhantomJS',\n 'Raven',\n 'Rekonq',\n 'RockMelt',\n { 'label': 'Samsung Internet', 'pattern': 'SamsungBrowser' },\n 'SeaMonkey',\n { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Sleipnir',\n 'SlimBrowser',\n { 'label': 'SRWare Iron', 'pattern': 'Iron' },\n 'Sunrise',\n 'Swiftfox',\n 'Vivaldi',\n 'Waterfox',\n 'WebPositive',\n { 'label': 'Yandex Browser', 'pattern': 'YaBrowser' },\n { 'label': 'UC Browser', 'pattern': 'UCBrowser' },\n 'Opera Mini',\n { 'label': 'Opera Mini', 'pattern': 'OPiOS' },\n 'Opera',\n { 'label': 'Opera', 'pattern': 'OPR' },\n 'Chromium',\n 'Chrome',\n { 'label': 'Chrome', 'pattern': '(?:HeadlessChrome)' },\n { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' },\n { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' },\n { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' },\n { 'label': 'IE', 'pattern': 'IEMobile' },\n { 'label': 'IE', 'pattern': 'MSIE' },\n 'Safari'\n ]);\n\n /* Detectable products (order is important). */\n var product = getProduct([\n { 'label': 'BlackBerry', 'pattern': 'BB10' },\n 'BlackBerry',\n { 'label': 'Galaxy S', 'pattern': 'GT-I9000' },\n { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' },\n { 'label': 'Galaxy S3', 'pattern': 'GT-I9300' },\n { 'label': 'Galaxy S4', 'pattern': 'GT-I9500' },\n { 'label': 'Galaxy S5', 'pattern': 'SM-G900' },\n { 'label': 'Galaxy S6', 'pattern': 'SM-G920' },\n { 'label': 'Galaxy S6 Edge', 'pattern': 'SM-G925' },\n { 'label': 'Galaxy S7', 'pattern': 'SM-G930' },\n { 'label': 'Galaxy S7 Edge', 'pattern': 'SM-G935' },\n 'Google TV',\n 'Lumia',\n 'iPad',\n 'iPod',\n 'iPhone',\n 'Kindle',\n { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Nexus',\n 'Nook',\n 'PlayBook',\n 'PlayStation Vita',\n 'PlayStation',\n 'TouchPad',\n 'Transformer',\n { 'label': 'Wii U', 'pattern': 'WiiU' },\n 'Wii',\n 'Xbox One',\n { 'label': 'Xbox 360', 'pattern': 'Xbox' },\n 'Xoom'\n ]);\n\n /* Detectable manufacturers. */\n var manufacturer = getManufacturer({\n 'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 },\n 'Alcatel': {},\n 'Archos': {},\n 'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 },\n 'Asus': { 'Transformer': 1 },\n 'Barnes & Noble': { 'Nook': 1 },\n 'BlackBerry': { 'PlayBook': 1 },\n 'Google': { 'Google TV': 1, 'Nexus': 1 },\n 'HP': { 'TouchPad': 1 },\n 'HTC': {},\n 'Huawei': {},\n 'Lenovo': {},\n 'LG': {},\n 'Microsoft': { 'Xbox': 1, 'Xbox One': 1 },\n 'Motorola': { 'Xoom': 1 },\n 'Nintendo': { 'Wii U': 1, 'Wii': 1 },\n 'Nokia': { 'Lumia': 1 },\n 'Oppo': {},\n 'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1, 'Galaxy S3': 1, 'Galaxy S4': 1 },\n 'Sony': { 'PlayStation': 1, 'PlayStation Vita': 1 },\n 'Xiaomi': { 'Mi': 1, 'Redmi': 1 }\n });\n\n /* Detectable operating systems (order is important). */\n var os = getOS([\n 'Windows Phone',\n 'KaiOS',\n 'Android',\n 'CentOS',\n { 'label': 'Chrome OS', 'pattern': 'CrOS' },\n 'Debian',\n { 'label': 'DragonFly BSD', 'pattern': 'DragonFly' },\n 'Fedora',\n 'FreeBSD',\n 'Gentoo',\n 'Haiku',\n 'Kubuntu',\n 'Linux Mint',\n 'OpenBSD',\n 'Red Hat',\n 'SuSE',\n 'Ubuntu',\n 'Xubuntu',\n 'Cygwin',\n 'Symbian OS',\n 'hpwOS',\n 'webOS ',\n 'webOS',\n 'Tablet OS',\n 'Tizen',\n 'Linux',\n 'Mac OS X',\n 'Macintosh',\n 'Mac',\n 'Windows 98;',\n 'Windows '\n ]);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Picks the layout engine from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected layout engine.\n */\n function getLayout(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the manufacturer from an array of guesses.\n *\n * @private\n * @param {Array} guesses An object of guesses.\n * @returns {null|string} The detected manufacturer.\n */\n function getManufacturer(guesses) {\n return reduce(guesses, function(result, value, key) {\n // Lookup the manufacturer by product or scan the UA for the manufacturer.\n return result || (\n value[product] ||\n value[/^[a-z]+(?: +[a-z]+\\b)*/i.exec(product)] ||\n RegExp('\\\\b' + qualify(key) + '(?:\\\\b|\\\\w*\\\\d)', 'i').exec(ua)\n ) && key;\n });\n }\n\n /**\n * Picks the browser name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected browser name.\n */\n function getName(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the OS name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected OS name.\n */\n function getOS(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + '(?:/[\\\\d.]+|[ \\\\w.]*)', 'i').exec(ua)\n )) {\n result = cleanupOS(result, pattern, guess.label || guess);\n }\n return result;\n });\n }\n\n /**\n * Picks the product name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected product name.\n */\n function getProduct(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + ' *\\\\d+[.\\\\w_]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + ' *\\\\w+-[\\\\w]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\\\d+|[^ ();-]*)', 'i').exec(ua)\n )) {\n // Split by forward slash and append product version if needed.\n if ((result = String((guess.label && !RegExp(pattern, 'i').test(guess.label)) ? guess.label : result).split('/'))[1] && !/[\\d.]+/.test(result[0])) {\n result[0] += ' ' + result[1];\n }\n // Correct character case and cleanup string.\n guess = guess.label || guess;\n result = format(result[0]\n .replace(RegExp(pattern, 'i'), guess)\n .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ')\n .replace(RegExp('(' + guess + ')[-_.]?(\\\\w)', 'i'), '$1 $2'));\n }\n return result;\n });\n }\n\n /**\n * Resolves the version using an array of UA patterns.\n *\n * @private\n * @param {Array} patterns An array of UA patterns.\n * @returns {null|string} The detected version.\n */\n function getVersion(patterns) {\n return reduce(patterns, function(result, pattern) {\n return result || (RegExp(pattern +\n '(?:-[\\\\d.]+/|(?: for [\\\\w-]+)?[ /-])([\\\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null;\n });\n }\n\n /**\n * Returns `platform.description` when the platform object is coerced to a string.\n *\n * @name toString\n * @memberOf platform\n * @returns {string} Returns `platform.description` if available, else an empty string.\n */\n function toStringPlatform() {\n return this.description || '';\n }\n\n /*------------------------------------------------------------------------*/\n\n // Convert layout to an array so we can add extra details.\n layout && (layout = [layout]);\n\n // Detect Android products.\n // Browsers on Android devices typically provide their product IDS after \"Android;\"\n // up to \"Build\" or \") AppleWebKit\".\n // Example:\n // \"Mozilla/5.0 (Linux; Android 8.1.0; Moto G (5) Plus) AppleWebKit/537.36\n // (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36\"\n if (/\\bAndroid\\b/.test(os) && !product &&\n (data = /\\bAndroid[^;]*;(.*?)(?:Build|\\) AppleWebKit)\\b/i.exec(ua))) {\n product = trim(data[1])\n // Replace any language codes (eg. \"en-US\").\n .replace(/^[a-z]{2}-[a-z]{2};\\s*/i, '')\n || null;\n }\n // Detect product names that contain their manufacturer's name.\n if (manufacturer && !product) {\n product = getProduct([manufacturer]);\n } else if (manufacturer && product) {\n product = product\n .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.\\\\s]', 'i'), manufacturer + ' ')\n .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.]?(\\\\w)', 'i'), manufacturer + ' $2');\n }\n // Clean up Google TV.\n if ((data = /\\bGoogle TV\\b/.exec(product))) {\n product = data[0];\n }\n // Detect simulators.\n if (/\\bSimulator\\b/i.test(ua)) {\n product = (product ? product + ' ' : '') + 'Simulator';\n }\n // Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS.\n if (name == 'Opera Mini' && /\\bOPiOS\\b/.test(ua)) {\n description.push('running in Turbo/Uncompressed mode');\n }\n // Detect IE Mobile 11.\n if (name == 'IE' && /\\blike iPhone OS\\b/.test(ua)) {\n data = parse(ua.replace(/like iPhone OS/, ''));\n manufacturer = data.manufacturer;\n product = data.product;\n }\n // Detect iOS.\n else if (/^iP/.test(product)) {\n name || (name = 'Safari');\n os = 'iOS' + ((data = / OS ([\\d_]+)/i.exec(ua))\n ? ' ' + data[1].replace(/_/g, '.')\n : '');\n }\n // Detect Kubuntu.\n else if (name == 'Konqueror' && /^Linux\\b/i.test(os)) {\n os = 'Kubuntu';\n }\n // Detect Android browsers.\n else if ((manufacturer && manufacturer != 'Google' &&\n ((/Chrome/.test(name) && !/\\bMobile Safari\\b/i.test(ua)) || /\\bVita\\b/.test(product))) ||\n (/\\bAndroid\\b/.test(os) && /^Chrome/.test(name) && /\\bVersion\\//i.test(ua))) {\n name = 'Android Browser';\n os = /\\bAndroid\\b/.test(os) ? os : 'Android';\n }\n // Detect Silk desktop/accelerated modes.\n else if (name == 'Silk') {\n if (!/\\bMobi/i.test(ua)) {\n os = 'Android';\n description.unshift('desktop mode');\n }\n if (/Accelerated *= *true/i.test(ua)) {\n description.unshift('accelerated');\n }\n }\n // Detect UC Browser speed mode.\n else if (name == 'UC Browser' && /\\bUCWEB\\b/.test(ua)) {\n description.push('speed mode');\n }\n // Detect PaleMoon identifying as Firefox.\n else if (name == 'PaleMoon' && (data = /\\bFirefox\\/([\\d.]+)\\b/.exec(ua))) {\n description.push('identifying as Firefox ' + data[1]);\n }\n // Detect Firefox OS and products running Firefox.\n else if (name == 'Firefox' && (data = /\\b(Mobile|Tablet|TV)\\b/i.exec(ua))) {\n os || (os = 'Firefox OS');\n product || (product = data[1]);\n }\n // Detect false positives for Firefox/Safari.\n else if (!name || (data = !/\\bMinefield\\b/i.test(ua) && /\\b(?:Firefox|Safari)\\b/.exec(name))) {\n // Escape the `/` for Firefox 1.\n if (name && !product && /[\\/,]|^[^(]+?\\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {\n // Clear name of false positives.\n name = null;\n }\n // Reassign a generic name.\n if ((data = product || manufacturer || os) &&\n (product || manufacturer || /\\b(?:Android|Symbian OS|Tablet OS|webOS)\\b/.test(os))) {\n name = /[a-z]+(?: Hat)?/i.exec(/\\bAndroid\\b/.test(os) ? os : data) + ' Browser';\n }\n }\n // Add Chrome version to description for Electron.\n else if (name == 'Electron' && (data = (/\\bChrome\\/([\\d.]+)\\b/.exec(ua) || 0)[1])) {\n description.push('Chromium ' + data);\n }\n // Detect non-Opera (Presto-based) versions (order is important).\n if (!version) {\n version = getVersion([\n '(?:Cloud9|CriOS|CrMo|Edge|Edg|EdgA|EdgiOS|FxiOS|HeadlessChrome|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\\\d.]+$)|UCBrowser|YaBrowser)',\n 'Version',\n qualify(name),\n '(?:Firefox|Minefield|NetFront)'\n ]);\n }\n // Detect stubborn layout engines.\n if ((data =\n layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' ||\n /\\bOpera\\b/.test(name) && (/\\bOPR\\b/.test(ua) ? 'Blink' : 'Presto') ||\n /\\b(?:Midori|Nook|Safari)\\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' ||\n !layout && /\\bMSIE\\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') ||\n layout == 'WebKit' && /\\bPlayStation\\b(?! Vita\\b)/i.test(name) && 'NetFront'\n )) {\n layout = [data];\n }\n // Detect Windows Phone 7 desktop mode.\n if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\\d+)/i.exec(ua) || 0)[1])) {\n name += ' Mobile';\n os = 'Windows Phone ' + (/\\+$/.test(data) ? data : data + '.x');\n description.unshift('desktop mode');\n }\n // Detect Windows Phone 8.x desktop mode.\n else if (/\\bWPDesktop\\b/i.test(ua)) {\n name = 'IE Mobile';\n os = 'Windows Phone 8.x';\n description.unshift('desktop mode');\n version || (version = (/\\brv:([\\d.]+)/.exec(ua) || 0)[1]);\n }\n // Detect IE 11 identifying as other browsers.\n else if (name != 'IE' && layout == 'Trident' && (data = /\\brv:([\\d.]+)/.exec(ua))) {\n if (name) {\n description.push('identifying as ' + name + (version ? ' ' + version : ''));\n }\n name = 'IE';\n version = data[1];\n }\n // Leverage environment features.\n if (useFeatures) {\n // Detect server-side environments.\n // Rhino has a global function while others have a global object.\n if (isHostType(context, 'global')) {\n if (java) {\n data = java.lang.System;\n arch = data.getProperty('os.arch');\n os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version');\n }\n if (rhino) {\n try {\n version = context.require('ringo/engine').version.join('.');\n name = 'RingoJS';\n } catch(e) {\n if ((data = context.system) && data.global.system == context.system) {\n name = 'Narwhal';\n os || (os = data[0].os || null);\n }\n }\n if (!name) {\n name = 'Rhino';\n }\n }\n else if (\n typeof context.process == 'object' && !context.process.browser &&\n (data = context.process)\n ) {\n if (typeof data.versions == 'object') {\n if (typeof data.versions.electron == 'string') {\n description.push('Node ' + data.versions.node);\n name = 'Electron';\n version = data.versions.electron;\n } else if (typeof data.versions.nw == 'string') {\n description.push('Chromium ' + version, 'Node ' + data.versions.node);\n name = 'NW.js';\n version = data.versions.nw;\n }\n }\n if (!name) {\n name = 'Node.js';\n arch = data.arch;\n os = data.platform;\n version = /[\\d.]+/.exec(data.version);\n version = version ? version[0] : null;\n }\n }\n }\n // Detect Adobe AIR.\n else if (getClassOf((data = context.runtime)) == airRuntimeClass) {\n name = 'Adobe AIR';\n os = data.flash.system.Capabilities.os;\n }\n // Detect PhantomJS.\n else if (getClassOf((data = context.phantom)) == phantomClass) {\n name = 'PhantomJS';\n version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch);\n }\n // Detect IE compatibility modes.\n else if (typeof doc.documentMode == 'number' && (data = /\\bTrident\\/(\\d+)/i.exec(ua))) {\n // We're in compatibility mode when the Trident version + 4 doesn't\n // equal the document mode.\n version = [version, doc.documentMode];\n if ((data = +data[1] + 4) != version[1]) {\n description.push('IE ' + version[1] + ' mode');\n layout && (layout[1] = '');\n version[1] = data;\n }\n version = name == 'IE' ? String(version[1].toFixed(1)) : version[0];\n }\n // Detect IE 11 masking as other browsers.\n else if (typeof doc.documentMode == 'number' && /^(?:Chrome|Firefox)\\b/.test(name)) {\n description.push('masking as ' + name + ' ' + version);\n name = 'IE';\n version = '11.0';\n layout = ['Trident'];\n os = 'Windows';\n }\n os = os && format(os);\n }\n // Detect prerelease phases.\n if (version && (data =\n /(?:[ab]|dp|pre|[ab]\\d+pre)(?:\\d+\\+?)?$/i.exec(version) ||\n /(?:alpha|beta)(?: ?\\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) ||\n /\\bMinefield\\b/i.test(ua) && 'a'\n )) {\n prerelease = /b/i.test(data) ? 'beta' : 'alpha';\n version = version.replace(RegExp(data + '\\\\+?$'), '') +\n (prerelease == 'beta' ? beta : alpha) + (/\\d+\\+?/.exec(data) || '');\n }\n // Detect Firefox Mobile.\n if (name == 'Fennec' || name == 'Firefox' && /\\b(?:Android|Firefox OS|KaiOS)\\b/.test(os)) {\n name = 'Firefox Mobile';\n }\n // Obscure Maxthon's unreliable version.\n else if (name == 'Maxthon' && version) {\n version = version.replace(/\\.[\\d.]+/, '.x');\n }\n // Detect Xbox 360 and Xbox One.\n else if (/\\bXbox\\b/i.test(product)) {\n if (product == 'Xbox 360') {\n os = null;\n }\n if (product == 'Xbox 360' && /\\bIEMobile\\b/.test(ua)) {\n description.unshift('mobile mode');\n }\n }\n // Add mobile postfix.\n else if ((/^(?:Chrome|IE|Opera)$/.test(name) || name && !product && !/Browser|Mobi/.test(name)) &&\n (os == 'Windows CE' || /Mobi/i.test(ua))) {\n name += ' Mobile';\n }\n // Detect IE platform preview.\n else if (name == 'IE' && useFeatures) {\n try {\n if (context.external === null) {\n description.unshift('platform preview');\n }\n } catch(e) {\n description.unshift('embedded');\n }\n }\n // Detect BlackBerry OS version.\n // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp\n else if ((/\\bBlackBerry\\b/.test(product) || /\\bBB10\\b/.test(ua)) && (data =\n (RegExp(product.replace(/ +/g, ' *') + '/([.\\\\d]+)', 'i').exec(ua) || 0)[1] ||\n version\n )) {\n data = [data, /BB10/.test(ua)];\n os = (data[1] ? (product = null, manufacturer = 'BlackBerry') : 'Device Software') + ' ' + data[0];\n version = null;\n }\n // Detect Opera identifying/masking itself as another browser.\n // http://www.opera.com/support/kb/view/843/\n else if (this != forOwn && product != 'Wii' && (\n (useFeatures && opera) ||\n (/Opera/.test(name) && /\\b(?:MSIE|Firefox)\\b/i.test(ua)) ||\n (name == 'Firefox' && /\\bOS X (?:\\d+\\.){2,}/.test(os)) ||\n (name == 'IE' && (\n (os && !/^Win/.test(os) && version > 5.5) ||\n /\\bWindows XP\\b/.test(os) && version > 8 ||\n version == 8 && !/\\bTrident\\b/.test(ua)\n ))\n ) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) {\n // When \"identifying\", the UA contains both Opera and the other browser's name.\n data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');\n if (reOpera.test(name)) {\n if (/\\bIE\\b/.test(data) && os == 'Mac OS') {\n os = null;\n }\n data = 'identify' + data;\n }\n // When \"masking\", the UA contains only the other browser's name.\n else {\n data = 'mask' + data;\n if (operaClass) {\n name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2'));\n } else {\n name = 'Opera';\n }\n if (/\\bIE\\b/.test(data)) {\n os = null;\n }\n if (!useFeatures) {\n version = null;\n }\n }\n layout = ['Presto'];\n description.push(data);\n }\n // Detect WebKit Nightly and approximate Chrome/Safari versions.\n if ((data = (/\\bAppleWebKit\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n // Correct build number for numeric comparison.\n // (e.g. \"532.5\" becomes \"532.05\")\n data = [parseFloat(data.replace(/\\.(\\d)$/, '.0$1')), data];\n // Nightly builds are postfixed with a \"+\".\n if (name == 'Safari' && data[1].slice(-1) == '+') {\n name = 'WebKit Nightly';\n prerelease = 'alpha';\n version = data[1].slice(0, -1);\n }\n // Clear incorrect browser versions.\n else if (version == data[1] ||\n version == (data[2] = (/\\bSafari\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n version = null;\n }\n // Use the full Chrome version when available.\n data[1] = (/\\b(?:Headless)?Chrome\\/([\\d.]+)/i.exec(ua) || 0)[1];\n // Detect Blink layout engine.\n if (data[0] == 537.36 && data[2] == 537.36 && parseFloat(data[1]) >= 28 && layout == 'WebKit') {\n layout = ['Blink'];\n }\n // Detect JavaScriptCore.\n // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi\n if (!useFeatures || (!likeChrome && !data[1])) {\n layout && (layout[1] = 'like Safari');\n data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : data < 537 ? 6 : data < 538 ? 7 : data < 601 ? 8 : data < 602 ? 9 : data < 604 ? 10 : data < 606 ? 11 : data < 608 ? 12 : '12');\n } else {\n layout && (layout[1] = 'like Chrome');\n data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : data < 537.11 ? '21+' : data < 537.13 ? 23 : data < 537.18 ? 24 : data < 537.24 ? 25 : data < 537.36 ? 26 : layout != 'Blink' ? '27' : '28');\n }\n // Add the postfix of \".x\" or \"+\" for approximate versions.\n layout && (layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+'));\n // Obscure version for some Safari 1-2 releases.\n if (name == 'Safari' && (!version || parseInt(version) > 45)) {\n version = data;\n } else if (name == 'Chrome' && /\\bHeadlessChrome/i.test(ua)) {\n description.unshift('headless');\n }\n }\n // Detect Opera desktop modes.\n if (name == 'Opera' && (data = /\\bzbov|zvav$/.exec(os))) {\n name += ' ';\n description.unshift('desktop mode');\n if (data == 'zvav') {\n name += 'Mini';\n version = null;\n } else {\n name += 'Mobile';\n }\n os = os.replace(RegExp(' *' + data + '$'), '');\n }\n // Detect Chrome desktop mode.\n else if (name == 'Safari' && /\\bChrome\\b/.exec(layout && layout[1])) {\n description.unshift('desktop mode');\n name = 'Chrome Mobile';\n version = null;\n\n if (/\\bOS X\\b/.test(os)) {\n manufacturer = 'Apple';\n os = 'iOS 4.3+';\n } else {\n os = null;\n }\n }\n // Newer versions of SRWare Iron uses the Chrome tag to indicate its version number.\n else if (/\\bSRWare Iron\\b/.test(name) && !version) {\n version = getVersion('Chrome');\n }\n // Strip incorrect OS versions.\n if (version && version.indexOf((data = /[\\d.]+$/.exec(os))) == 0 &&\n ua.indexOf('/' + data + '-') > -1) {\n os = trim(os.replace(data, ''));\n }\n // Ensure OS does not include the browser name.\n if (os && os.indexOf(name) != -1 && !RegExp(name + ' OS').test(os)) {\n os = os.replace(RegExp(' *' + qualify(name) + ' *'), '');\n }\n // Add layout engine.\n if (layout && !/\\b(?:Avant|Nook)\\b/.test(name) && (\n /Browser|Lunascape|Maxthon/.test(name) ||\n name != 'Safari' && /^iOS/.test(os) && /\\bSafari\\b/.test(layout[1]) ||\n /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|SRWare Iron|Vivaldi|Web)/.test(name) && layout[1])) {\n // Don't add layout details to description if they are falsey.\n (data = layout[layout.length - 1]) && description.push(data);\n }\n // Combine contextual information.\n if (description.length) {\n description = ['(' + description.join('; ') + ')'];\n }\n // Append manufacturer to description.\n if (manufacturer && product && product.indexOf(manufacturer) < 0) {\n description.push('on ' + manufacturer);\n }\n // Append product to description.\n if (product) {\n description.push((/^on /.test(description[description.length - 1]) ? '' : 'on ') + product);\n }\n // Parse the OS into an object.\n if (os) {\n data = / ([\\d.+]+)$/.exec(os);\n isSpecialCasedOS = data && os.charAt(os.length - data[0].length - 1) == '/';\n os = {\n 'architecture': 32,\n 'family': (data && !isSpecialCasedOS) ? os.replace(data[0], '') : os,\n 'version': data ? data[1] : null,\n 'toString': function() {\n var version = this.version;\n return this.family + ((version && !isSpecialCasedOS) ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : '');\n }\n };\n }\n // Add browser/OS architecture.\n if ((data = /\\b(?:AMD|IA|Win|WOW|x86_|x)64\\b/i.exec(arch)) && !/\\bi686\\b/i.test(arch)) {\n if (os) {\n os.architecture = 64;\n os.family = os.family.replace(RegExp(' *' + data), '');\n }\n if (\n name && (/\\bWOW64\\b/i.test(ua) ||\n (useFeatures && /\\w(?:86|32)$/.test(nav.cpuClass || nav.platform) && !/\\bWin64; x64\\b/i.test(ua)))\n ) {\n description.unshift('32-bit');\n }\n }\n // Chrome 39 and above on OS X is always 64-bit.\n else if (\n os && /^OS X/.test(os.family) &&\n name == 'Chrome' && parseFloat(version) >= 39\n ) {\n os.architecture = 64;\n }\n\n ua || (ua = null);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The platform object.\n *\n * @name platform\n * @type Object\n */\n var platform = {};\n\n /**\n * The platform description.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.description = ua;\n\n /**\n * The name of the browser's layout engine.\n *\n * The list of common layout engines include:\n * \"Blink\", \"EdgeHTML\", \"Gecko\", \"Trident\" and \"WebKit\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.layout = layout && layout[0];\n\n /**\n * The name of the product's manufacturer.\n *\n * The list of manufacturers include:\n * \"Apple\", \"Archos\", \"Amazon\", \"Asus\", \"Barnes & Noble\", \"BlackBerry\",\n * \"Google\", \"HP\", \"HTC\", \"LG\", \"Microsoft\", \"Motorola\", \"Nintendo\",\n * \"Nokia\", \"Samsung\" and \"Sony\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.manufacturer = manufacturer;\n\n /**\n * The name of the browser/environment.\n *\n * The list of common browser names include:\n * \"Chrome\", \"Electron\", \"Firefox\", \"Firefox for iOS\", \"IE\",\n * \"Microsoft Edge\", \"PhantomJS\", \"Safari\", \"SeaMonkey\", \"Silk\",\n * \"Opera Mini\" and \"Opera\"\n *\n * Mobile versions of some browsers have \"Mobile\" appended to their name:\n * eg. \"Chrome Mobile\", \"Firefox Mobile\", \"IE Mobile\" and \"Opera Mobile\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.name = name;\n\n /**\n * The alpha/beta release indicator.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.prerelease = prerelease;\n\n /**\n * The name of the product hosting the browser.\n *\n * The list of common products include:\n *\n * \"BlackBerry\", \"Galaxy S4\", \"Lumia\", \"iPad\", \"iPod\", \"iPhone\", \"Kindle\",\n * \"Kindle Fire\", \"Nexus\", \"Nook\", \"PlayBook\", \"TouchPad\" and \"Transformer\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.product = product;\n\n /**\n * The browser's user agent string.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.ua = ua;\n\n /**\n * The browser/environment version.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.version = name && version;\n\n /**\n * The name of the operating system.\n *\n * @memberOf platform\n * @type Object\n */\n platform.os = os || {\n\n /**\n * The CPU architecture the OS is built for.\n *\n * @memberOf platform.os\n * @type number|null\n */\n 'architecture': null,\n\n /**\n * The family of the OS.\n *\n * Common values include:\n * \"Windows\", \"Windows Server 2008 R2 / 7\", \"Windows Server 2008 / Vista\",\n * \"Windows XP\", \"OS X\", \"Linux\", \"Ubuntu\", \"Debian\", \"Fedora\", \"Red Hat\",\n * \"SuSE\", \"Android\", \"iOS\" and \"Windows Phone\"\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'family': null,\n\n /**\n * The version of the OS.\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'version': null,\n\n /**\n * Returns the OS string.\n *\n * @memberOf platform.os\n * @returns {string} The OS string.\n */\n 'toString': function() { return 'null'; }\n };\n\n platform.parse = parse;\n platform.toString = toStringPlatform;\n\n if (platform.version) {\n description.unshift(version);\n }\n if (platform.name) {\n description.unshift(name);\n }\n if (os && name && !(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product))) {\n description.push(product ? '(' + os + ')' : 'on ' + os);\n }\n if (description.length) {\n platform.description = description.join(' ');\n }\n return platform;\n }\n\n /*--------------------------------------------------------------------------*/\n\n // Export platform.\n var platform = parse();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like the following:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose platform on the global object to prevent errors when platform is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n root.platform = platform;\n\n // Define as an anonymous module so platform can be aliased through path mapping.\n define(function() {\n return platform;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\n else if (freeExports && freeModule) {\n // Export for CommonJS support.\n forOwn(platform, function(value, key) {\n freeExports[key] = value;\n });\n }\n else {\n // Export to the global object.\n root.platform = platform;\n }\n}.call(this));\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRouterDom = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar initState = {\n action: null,\n isActive: false,\n nextLocation: null\n};\n\n/**\n * A replacement component for the react-router `Prompt`.\n * Allows for more flexible dialogs.\n *\n * @example\n * <NavigationPrompt when={this.props.isDirty}>\n * {({isActive, onConfirm, onCancel}) => (\n * <Modal show={isActive}>\n * <div>\n * <p>Do you really want to leave?</p>\n * <button onClick={onCancel}>Cancel</button>\n * <button onClick={onConfirm}>Ok</button>\n * </div>\n * </Modal>\n * )}\n * </NavigationPrompt>\n */\n\nvar NavigationPrompt = function (_React$Component) {\n _inherits(NavigationPrompt, _React$Component);\n\n /*:: _prevUserAction: string; */\n /*:: _isMounted: bool; */\n\n function NavigationPrompt(props) {\n _classCallCheck(this, NavigationPrompt);\n\n // `_prevUserAction` weirdness because setState()'s callback is not getting invoked.\n // See: See https://github.com/ZacharyRSmith/react-router-navigation-prompt/pull/9\n // I don't like making this an instance var,\n var _this = _possibleConstructorReturn(this, (NavigationPrompt.__proto__ || Object.getPrototypeOf(NavigationPrompt)).call(this, props));\n\n _this._prevUserAction = '';\n\n // This component could be used from inside a page, and therefore could be\n // mounted/unmounted when the route changes.\n _this._isMounted = true;\n\n _this.block = _this.block.bind(_this);\n _this.onBeforeUnload = _this.onBeforeUnload.bind(_this);\n _this.onCancel = _this.onCancel.bind(_this);\n _this.onConfirm = _this.onConfirm.bind(_this);\n _this.when = _this.when.bind(_this);\n\n _this.state = _extends({}, initState, { unblock: function unblock() {} /* unblock will be set in componentDidMount */ });\n return _this;\n }\n\n _createClass(NavigationPrompt, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (!this.props.disableNative) {\n window.addEventListener('beforeunload', this.onBeforeUnload);\n }\n\n this.setState({ unblock: this.props.history.block(this.block) });\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n if (this._prevUserAction === 'CANCEL' && typeof this.props.afterCancel === 'function') {\n this.props.afterCancel();\n } else if (this._prevUserAction === 'CONFIRM' && typeof this.props.afterConfirm === 'function') {\n this.props.afterConfirm();\n }\n this._prevUserAction = '';\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._isMounted = false;\n if (this._prevUserAction === 'CONFIRM' && typeof this.props.afterConfirm === 'function') {\n this._prevUserAction = '';\n this.props.afterConfirm();\n }\n this.state.unblock();\n if (!this.props.disableNative) {\n window.removeEventListener('beforeunload', this.onBeforeUnload);\n }\n }\n }, {\n key: 'block',\n value: function block(nextLocation, action) {\n var result = this.when(nextLocation, action);\n if (result) {\n this.setState({\n action: action,\n nextLocation: nextLocation,\n isActive: true\n });\n }\n return !result;\n }\n }, {\n key: 'navigateToNextLocation',\n value: function navigateToNextLocation(cb) {\n var _this2 = this;\n\n var _state = this.state,\n action = _state.action,\n nextLocation = _state.nextLocation;\n\n action = {\n 'POP': this.props.allowGoBack ? 'goBack' : 'push',\n 'PUSH': 'push',\n 'REPLACE': 'replace'\n }[action || 'PUSH'];\n if (!nextLocation) nextLocation = { pathname: '/' };\n var history = this.props.history;\n\n\n this.state.unblock();\n this._prevUserAction = 'CONFIRM';\n if (action === 'goBack') {\n // Because there is asynchronous time between calling history.goBack()\n // and history actually changing, we need to set up this temporary callback\n // -- if we tried to run this synchronously after calling history.goBack(),\n // then navigateToNextLocation would be triggered again.\n var unlisten = history.listen(function () {\n unlisten();\n if (_this2._isMounted) {\n // Just in case we unmounted on the route change\n _this2.setState(_extends({}, initState, {\n unblock: history.block(_this2.block)\n }));\n }\n });\n history.goBack();\n } else {\n // $FlowFixMe history.replace()'s type expects LocationShape even though it works with Location.\n history[action](nextLocation); // could unmount at this point\n if (this._isMounted) {\n // Just in case we unmounted on the route change\n this.setState(_extends({}, initState, {\n unblock: this.props.history.block(this.block)\n })); // FIXME? Does history.listen need to be used instead, for async?\n }\n }\n }\n }, {\n key: 'onCancel',\n value: function onCancel() {\n var _this3 = this;\n\n (this.props.beforeCancel || function (cb) {\n cb();\n })(function () {\n _this3._prevUserAction = 'CANCEL';\n _this3.setState(_extends({}, initState));\n });\n }\n }, {\n key: 'onConfirm',\n value: function onConfirm() {\n var _this4 = this;\n\n (this.props.beforeConfirm || function (cb) {\n cb();\n })(function () {\n _this4.navigateToNextLocation(_this4.props.afterConfirm);\n });\n }\n }, {\n key: 'onBeforeUnload',\n value: function onBeforeUnload(e) {\n if (!this.when()) return;\n var msg = 'Do you want to leave this site?\\n\\nChanges you made may not be saved.';\n e.returnValue = msg;\n return msg;\n }\n }, {\n key: 'when',\n value: function when(nextLocation, action) {\n if (typeof this.props.when === 'function') {\n return this.props.when(this.props.location, nextLocation, action);\n } else {\n return this.props.when;\n }\n }\n }, {\n key: 'render',\n value: function render() {\n if (!this.state.isActive && !this.props.renderIfNotActive) return null;\n return _react2.default.createElement(\n 'div',\n null,\n this.props.children({\n isActive: this.state.isActive,\n onConfirm: this.onConfirm,\n onCancel: this.onCancel\n })\n );\n }\n }]);\n\n return NavigationPrompt;\n}(_react2.default.Component);\n\nexports.default = (0, _reactRouterDom.withRouter)(NavigationPrompt);\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"react\");\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"react-router-dom\");\n\n/***/ })\n/******/ ]);","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport {\r\n Separators,\r\n CacheAccountType,\r\n CacheType,\r\n Constants,\r\n} from \"../../utils/Constants\";\r\nimport { Authority } from \"../../authority/Authority\";\r\nimport { AuthToken } from \"../../account/AuthToken\";\r\nimport { ICrypto } from \"../../crypto/ICrypto\";\r\nimport { buildClientInfo } from \"../../account/ClientInfo\";\r\nimport { StringUtils } from \"../../utils/StringUtils\";\r\nimport { AccountInfo } from \"../../account/AccountInfo\";\r\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\r\nimport { AuthorityType } from \"../../authority/AuthorityType\";\r\nimport { Logger } from \"../../logger/Logger\";\r\nimport { TokenClaims } from \"../../account/TokenClaims\";\r\n\r\n/**\r\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\r\n *\r\n * Key : Value Schema\r\n *\r\n * Key: <home_account_id>-<environment>-<realm*>\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\r\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\r\n * authorityType: Accounts authority type as a string\r\n * name: Full name for the account, including given name and family name,\r\n * clientInfo: Full base64 encoded client info received from ESTS\r\n * lastModificationTime: last time this entity was modified in the cache\r\n * lastModificationApp:\r\n * idTokenClaims: Object containing claims parsed from ID token\r\n * nativeAccountId: Account identifier on the native device\r\n * }\r\n */\r\nexport class AccountEntity {\r\n homeAccountId: string;\r\n environment: string;\r\n realm: string;\r\n localAccountId: string;\r\n username: string;\r\n authorityType: string;\r\n name?: string;\r\n clientInfo?: string;\r\n lastModificationTime?: string;\r\n lastModificationApp?: string;\r\n cloudGraphHostName?: string;\r\n msGraphHost?: string;\r\n idTokenClaims?: TokenClaims;\r\n nativeAccountId?: string;\r\n\r\n /**\r\n * Generate Account Id key component as per the schema: <home_account_id>-<environment>\r\n */\r\n generateAccountId(): string {\r\n const accountId: Array<string> = [this.homeAccountId, this.environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Generate Account Cache Key as per the schema: <home_account_id>-<environment>-<realm*>\r\n */\r\n generateAccountKey(): string {\r\n return AccountEntity.generateAccountCacheKey({\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId\r\n });\r\n }\r\n\r\n /**\r\n * returns the type of the cache (in this case account)\r\n */\r\n generateType(): number {\r\n switch (this.authorityType) {\r\n case CacheAccountType.ADFS_ACCOUNT_TYPE:\r\n return CacheType.ADFS;\r\n case CacheAccountType.MSAV1_ACCOUNT_TYPE:\r\n return CacheType.MSA;\r\n case CacheAccountType.MSSTS_ACCOUNT_TYPE:\r\n return CacheType.MSSTS;\r\n case CacheAccountType.GENERIC_ACCOUNT_TYPE:\r\n return CacheType.GENERIC;\r\n default: {\r\n throw ClientAuthError.createUnexpectedAccountTypeError();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns the AccountInfo interface for this account.\r\n */\r\n getAccountInfo(): AccountInfo {\r\n return {\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId,\r\n name: this.name,\r\n idTokenClaims: this.idTokenClaims,\r\n nativeAccountId: this.nativeAccountId\r\n };\r\n }\r\n\r\n /**\r\n * Generates account key from interface\r\n * @param accountInterface\r\n */\r\n static generateAccountCacheKey(accountInterface: AccountInfo): string {\r\n const accountKey = [\r\n accountInterface.homeAccountId,\r\n accountInterface.environment || Constants.EMPTY_STRING,\r\n accountInterface.tenantId || Constants.EMPTY_STRING,\r\n ];\r\n\r\n return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\r\n * @param clientInfo\r\n * @param authority\r\n * @param idToken\r\n * @param policy\r\n */\r\n static createAccount(\r\n clientInfo: string,\r\n homeAccountId: string,\r\n idToken: AuthToken,\r\n authority?: Authority,\r\n cloudGraphHostName?: string,\r\n msGraphHost?: string,\r\n environment?: string,\r\n nativeAccountId?: string\r\n ): AccountEntity {\r\n const account: AccountEntity = new AccountEntity();\r\n\r\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\r\n account.clientInfo = clientInfo;\r\n account.homeAccountId = homeAccountId;\r\n account.nativeAccountId = nativeAccountId;\r\n\r\n const env = environment || (authority && authority.getPreferredCache());\r\n\r\n if (!env) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n\r\n account.environment = env;\r\n // non AAD scenarios can have empty realm\r\n account.realm = idToken?.claims?.tid || Constants.EMPTY_STRING;\r\n\r\n if (idToken) {\r\n account.idTokenClaims = idToken.claims;\r\n\r\n // How do you account for MSA CID here?\r\n account.localAccountId = idToken?.claims?.oid || idToken?.claims?.sub || Constants.EMPTY_STRING;\r\n\r\n /*\r\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array.\r\n * In most cases it will contain a single email. This field should not be relied upon if a custom \r\n * policy is configured to return more than 1 email.\r\n */\r\n const preferredUsername = idToken?.claims?.preferred_username;\r\n const email = (idToken?.claims?.emails) ? idToken.claims.emails[0] : null;\r\n \r\n account.username = preferredUsername || email || Constants.EMPTY_STRING;\r\n account.name = idToken?.claims?.name;\r\n }\r\n\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n\r\n return account;\r\n }\r\n\r\n /**\r\n * Builds non-AAD/ADFS account.\r\n * @param authority\r\n * @param idToken\r\n */\r\n static createGenericAccount(\r\n homeAccountId: string,\r\n idToken: AuthToken,\r\n authority?: Authority,\r\n cloudGraphHostName?: string,\r\n msGraphHost?: string,\r\n environment?: string\r\n ): AccountEntity {\r\n const account: AccountEntity = new AccountEntity();\r\n\r\n account.authorityType = (\r\n authority &&\r\n authority.authorityType === AuthorityType.Adfs\r\n ) ? CacheAccountType.ADFS_ACCOUNT_TYPE : CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n \r\n account.homeAccountId = homeAccountId;\r\n // non AAD scenarios can have empty realm\r\n account.realm = Constants.EMPTY_STRING;\r\n\r\n const env = environment || authority && authority.getPreferredCache();\r\n\r\n if (!env) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n\r\n if (idToken) {\r\n // How do you account for MSA CID here?\r\n account.localAccountId = idToken?.claims?.oid || idToken?.claims?.sub || Constants.EMPTY_STRING;\r\n // upn claim for most ADFS scenarios\r\n account.username = idToken?.claims?.upn || Constants.EMPTY_STRING;\r\n account.name = idToken?.claims?.name || Constants.EMPTY_STRING;\r\n account.idTokenClaims = idToken?.claims;\r\n }\r\n\r\n account.environment = env;\r\n\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n\r\n /*\r\n * add uniqueName to claims\r\n * account.name = idToken.claims.uniqueName;\r\n */\r\n\r\n return account;\r\n }\r\n\r\n /**\r\n * Generate HomeAccountId from server response\r\n * @param serverClientInfo\r\n * @param authType\r\n */\r\n static generateHomeAccountId(\r\n serverClientInfo: string,\r\n authType: AuthorityType,\r\n logger: Logger,\r\n cryptoObj: ICrypto,\r\n idToken?: AuthToken\r\n ): string {\r\n\r\n const accountId = idToken?.claims?.sub ? idToken.claims.sub : Constants.EMPTY_STRING;\r\n\r\n // since ADFS does not have tid and does not set client_info\r\n if (authType === AuthorityType.Adfs || authType === AuthorityType.Dsts) {\r\n return accountId;\r\n }\r\n\r\n // for cases where there is clientInfo\r\n if (serverClientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(serverClientInfo, cryptoObj);\r\n if (!StringUtils.isEmpty(clientInfo.uid) && !StringUtils.isEmpty(clientInfo.utid)) {\r\n return `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`;\r\n }\r\n } catch (e) {}\r\n }\r\n\r\n // default to \"sub\" claim\r\n logger.verbose(\"No client info in response\");\r\n return accountId;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAccountEntity(entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"localAccountId\") &&\r\n entity.hasOwnProperty(\"username\") &&\r\n entity.hasOwnProperty(\"authorityType\")\r\n );\r\n }\r\n\r\n /**\r\n * Helper function to determine whether 2 accountInfo objects represent the same account\r\n * @param accountA\r\n * @param accountB\r\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\r\n */\r\n static accountInfoIsEqual(accountA: AccountInfo | null, accountB: AccountInfo | null, compareClaims?: boolean): boolean {\r\n if (!accountA || !accountB) {\r\n return false;\r\n }\r\n\r\n let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\r\n if (compareClaims) {\r\n const accountAClaims = (accountA.idTokenClaims || {}) as TokenClaims;\r\n const accountBClaims = (accountB.idTokenClaims || {}) as TokenClaims;\r\n\r\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\r\n claimsMatch = (accountAClaims.iat === accountBClaims.iat) &&\r\n (accountAClaims.nonce === accountBClaims.nonce);\r\n }\r\n\r\n return (accountA.homeAccountId === accountB.homeAccountId) &&\r\n (accountA.localAccountId === accountB.localAccountId) &&\r\n (accountA.username === accountB.username) &&\r\n (accountA.tenantId === accountB.tenantId) &&\r\n (accountA.environment === accountB.environment) &&\r\n (accountA.nativeAccountId === accountB.nativeAccountId) &&\r\n claimsMatch;\r\n }\r\n}\r\n","function _extends() {\n module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","import isMap from './isMap';\nexport default function ownKeys(object) {\n if (isMap(object)) {\n // We are using loose transforms in babel. Here we are trying to convert an\n // interable to an array. Loose mode expects everything to already be an\n // array. The problem is that our eslint rules encourage us to prefer\n // spread over Array.from.\n //\n // Instead of disabling loose mode we simply disable the warning.\n // eslint-disable-next-line unicorn/prefer-spread\n return Array.from(object.keys());\n }\n\n if (typeof Reflect !== 'undefined' && typeof Reflect.ownKeys === 'function') {\n return Reflect.ownKeys(object);\n }\n\n var keys = Object.getOwnPropertyNames(object);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n keys = keys.concat(Object.getOwnPropertySymbols(object));\n }\n\n return keys;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\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","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n var dayOfMonth = date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { LoggerOptions } from \"../config/ClientConfiguration\";\r\nimport { Constants } from \"../utils/Constants\";\r\n\r\n/**\r\n * Options for logger messages.\r\n */\r\nexport type LoggerMessageOptions = {\r\n logLevel: LogLevel,\r\n containsPii?: boolean,\r\n context?: string,\r\n correlationId?: string\r\n};\r\n\r\n/**\r\n * Log message level.\r\n */\r\nexport enum LogLevel {\r\n Error,\r\n Warning,\r\n Info,\r\n Verbose,\r\n Trace\r\n}\r\n\r\n/**\r\n * Callback to send the messages to.\r\n */\r\nexport interface ILoggerCallback {\r\n (level: LogLevel, message: string, containsPii: boolean): void;\r\n}\r\n\r\n/**\r\n * Class which facilitates logging of messages to a specific place.\r\n */\r\nexport class Logger {\r\n\r\n // Correlation ID for request, usually set by user.\r\n private correlationId: string;\r\n\r\n // Current log level, defaults to info.\r\n private level: LogLevel = LogLevel.Info;\r\n\r\n // Boolean describing whether PII logging is allowed.\r\n private piiLoggingEnabled: boolean;\r\n\r\n // Callback to send messages to.\r\n private localCallback: ILoggerCallback;\r\n\r\n // Package name implementing this logger\r\n private packageName: string;\r\n\r\n // Package version implementing this logger\r\n private packageVersion: string;\r\n\r\n constructor(loggerOptions: LoggerOptions, packageName?: string, packageVersion?: string) {\r\n const defaultLoggerCallback = () => {\r\n return;\r\n };\r\n const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions();\r\n this.localCallback = setLoggerOptions.loggerCallback || defaultLoggerCallback;\r\n this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false;\r\n this.level = typeof(setLoggerOptions.logLevel) === \"number\" ? setLoggerOptions.logLevel : LogLevel.Info;\r\n this.correlationId = setLoggerOptions.correlationId || Constants.EMPTY_STRING;\r\n this.packageName = packageName || Constants.EMPTY_STRING;\r\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\r\n }\r\n \r\n private static createDefaultLoggerOptions(): LoggerOptions {\r\n return {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info\r\n };\r\n }\r\n\r\n /**\r\n * Create new Logger with existing configurations.\r\n */\r\n public clone(packageName: string, packageVersion: string, correlationId?: string): Logger {\r\n return new Logger({loggerCallback: this.localCallback, piiLoggingEnabled: this.piiLoggingEnabled, logLevel: this.level, correlationId: correlationId || this.correlationId}, packageName, packageVersion);\r\n }\r\n\r\n /**\r\n * Log message with required options.\r\n */\r\n private logMessage(logMessage: string, options: LoggerMessageOptions): void {\r\n if ((options.logLevel > this.level) || (!this.piiLoggingEnabled && options.containsPii)) {\r\n return;\r\n }\r\n const timestamp = new Date().toUTCString();\r\n\r\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\r\n let logHeader: string;\r\n if (!StringUtils.isEmpty(options.correlationId)) {\r\n logHeader = `[${timestamp}] : [${options.correlationId}]`;\r\n } else if (!StringUtils.isEmpty(this.correlationId)) {\r\n logHeader = `[${timestamp}] : [${this.correlationId}]`;\r\n } else {\r\n logHeader = `[${timestamp}]`;\r\n }\r\n\r\n const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${LogLevel[options.logLevel]} - ${logMessage}`;\r\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\r\n this.executeCallback(options.logLevel, log, options.containsPii || false);\r\n }\r\n\r\n /**\r\n * Execute callback with message.\r\n */\r\n executeCallback(level: LogLevel, message: string, containsPii: boolean): void {\r\n if (this.localCallback) {\r\n this.localCallback(level, message, containsPii);\r\n }\r\n }\r\n\r\n /**\r\n * Logs error messages.\r\n */\r\n error(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs error messages with PII.\r\n */\r\n errorPii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs warning messages.\r\n */\r\n warning(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs warning messages with PII.\r\n */\r\n warningPii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs info messages.\r\n */\r\n info(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs info messages with PII.\r\n */\r\n infoPii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs verbose messages.\r\n */\r\n verbose(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs verbose messages with PII.\r\n */\r\n verbosePii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs trace messages.\r\n */\r\n trace(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs trace messages with PII.\r\n */\r\n tracePii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Returns whether PII Logging is enabled or not.\r\n */\r\n isPiiLoggingEnabled(): boolean {\r\n return this.piiLoggingEnabled || false;\r\n }\r\n}\r\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","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"noGutters\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar defaultProps = {\n noGutters: false\n};\nvar Row = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n noGutters = _ref.noGutters,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n var sizePrefix = decoratedBsPrefix + \"-cols\";\n var classes = [];\n DEVICE_SIZES.forEach(function (brkPoint) {\n var propValue = props[brkPoint];\n delete props[brkPoint];\n var cols;\n\n if (propValue != null && typeof propValue === 'object') {\n cols = propValue.cols;\n } else {\n cols = propValue;\n }\n\n var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n if (cols != null) classes.push(\"\" + sizePrefix + infix + \"-\" + cols);\n });\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames.apply(void 0, [className, decoratedBsPrefix, noGutters && 'no-gutters'].concat(classes))\n }));\n});\nRow.displayName = 'Row';\nRow.defaultProps = defaultProps;\nexport default Row;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar Col = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'col');\n var spans = [];\n var classes = [];\n DEVICE_SIZES.forEach(function (brkPoint) {\n var propValue = props[brkPoint];\n delete props[brkPoint];\n var span;\n var offset;\n var order;\n\n if (typeof propValue === 'object' && propValue != null) {\n var _propValue$span = propValue.span;\n span = _propValue$span === void 0 ? true : _propValue$span;\n offset = propValue.offset;\n order = propValue.order;\n } else {\n span = propValue;\n }\n\n var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n if (span) spans.push(span === true ? \"\" + prefix + infix : \"\" + prefix + infix + \"-\" + span);\n if (order != null) classes.push(\"order\" + infix + \"-\" + order);\n if (offset != null) classes.push(\"offset\" + infix + \"-\" + offset);\n });\n\n if (!spans.length) {\n spans.push(prefix); // plain 'col'\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames.apply(void 0, [className].concat(spans, classes))\n }));\n});\nCol.displayName = 'Col';\nexport default Col;","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\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}","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","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","module.exports = true;\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","exports.f = {}.propertyIsEnumerable;\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","import { CANCEL } from '@redux-saga/symbols';\n\nvar MAX_SIGNED_INT = 2147483647;\nfunction delayP(ms, val) {\n if (val === void 0) {\n val = true;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value\n if (process.env.NODE_ENV !== 'production' && ms > MAX_SIGNED_INT) {\n throw new Error('delay only supports a maximum value of ' + MAX_SIGNED_INT + 'ms');\n }\n\n var timeoutId;\n var promise = new Promise(function (resolve) {\n timeoutId = setTimeout(resolve, Math.min(MAX_SIGNED_INT, ms), val);\n });\n\n promise[CANCEL] = function () {\n clearTimeout(timeoutId);\n };\n\n return promise;\n}\n\nexport default delayP;\n","export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n","import { DEFAULT_NAMESPACE, ACTION_TYPE_DELIMITER } from '../constants';\nimport ownKeys from './ownKeys';\nimport get from './get';\nexport default (function (predicate) {\n return function flatten(map, _temp, partialFlatMap, partialFlatActionType) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$namespace = _ref.namespace,\n namespace = _ref$namespace === void 0 ? DEFAULT_NAMESPACE : _ref$namespace,\n prefix = _ref.prefix;\n\n if (partialFlatMap === void 0) {\n partialFlatMap = {};\n }\n\n if (partialFlatActionType === void 0) {\n partialFlatActionType = '';\n }\n\n function connectNamespace(type) {\n var _ref2;\n\n if (!partialFlatActionType) return type;\n var types = type.toString().split(ACTION_TYPE_DELIMITER);\n var partials = partialFlatActionType.split(ACTION_TYPE_DELIMITER);\n return (_ref2 = []).concat.apply(_ref2, partials.map(function (p) {\n return types.map(function (t) {\n return \"\" + p + namespace + t;\n });\n })).join(ACTION_TYPE_DELIMITER);\n }\n\n function connectPrefix(type) {\n if (partialFlatActionType || !prefix || prefix && new RegExp(\"^\" + prefix + namespace).test(type)) {\n return type;\n }\n\n return \"\" + prefix + namespace + type;\n }\n\n ownKeys(map).forEach(function (type) {\n var nextNamespace = connectPrefix(connectNamespace(type));\n var mapValue = get(type, map);\n\n if (predicate(mapValue)) {\n flatten(mapValue, {\n namespace: namespace,\n prefix: prefix\n }, partialFlatMap, nextNamespace);\n } else {\n partialFlatMap[nextNamespace] = mapValue;\n }\n });\n return partialFlatMap;\n };\n});","import isMap from './isMap';\nexport default function get(key, x) {\n return isMap(x) ? x.get(key) : x[key];\n}","export default (function (value) {\n return value === null || value === undefined;\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}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport default function startOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3;\n date.setMonth(month, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _excluded = [\"bsPrefix\", \"size\", \"hasValidation\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar InputGroupAppend = createWithBsPrefix('input-group-append');\nvar InputGroupPrepend = createWithBsPrefix('input-group-prepend');\nvar InputGroupText = createWithBsPrefix('input-group-text', {\n Component: 'span'\n});\n\nvar InputGroupCheckbox = function InputGroupCheckbox(props) {\n return /*#__PURE__*/React.createElement(InputGroupText, null, /*#__PURE__*/React.createElement(\"input\", _extends({\n type: \"checkbox\"\n }, props)));\n};\n\nvar InputGroupRadio = function InputGroupRadio(props) {\n return /*#__PURE__*/React.createElement(InputGroupText, null, /*#__PURE__*/React.createElement(\"input\", _extends({\n type: \"radio\"\n }, props)));\n};\n\n/**\n *\n * @property {InputGroupAppend} Append\n * @property {InputGroupPrepend} Prepend\n * @property {InputGroupText} Text\n * @property {InputGroupRadio} Radio\n * @property {InputGroupCheckbox} Checkbox\n */\nvar InputGroup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n size = _ref.size,\n hasValidation = _ref.hasValidation,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'input-group');\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, bsPrefix, size && bsPrefix + \"-\" + size, hasValidation && 'has-validation')\n }));\n});\nInputGroup.displayName = 'InputGroup';\nInputGroup.Text = InputGroupText;\nInputGroup.Radio = InputGroupRadio;\nInputGroup.Checkbox = InputGroupCheckbox;\nInputGroup.Append = InputGroupAppend;\nInputGroup.Prepend = InputGroupPrepend;\nexport default InputGroup;","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","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","exports.f = Object.getOwnPropertySymbols;\n","module.exports = {};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = all;\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction all() {\n for (var _len = arguments.length, validators = Array(_len), _key = 0; _key < _len; _key++) {\n validators[_key] = arguments[_key];\n }\n\n function allPropTypes() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var error = null;\n\n validators.forEach(function (validator) {\n if (error != null) {\n return;\n }\n\n var result = validator.apply(undefined, args);\n if (result != null) {\n error = result;\n }\n });\n\n return error;\n }\n\n return (0, _createChainableTypeChecker2.default)(allPropTypes);\n}\nmodule.exports = exports['default'];","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","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}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\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/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var 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\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee 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 `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee 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 `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee 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 all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(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 false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\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 */\n function 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\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 */\n function 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\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\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 */\n function 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\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\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 */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\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 */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\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 */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(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 /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function 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 /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function 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 /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\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 */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function 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\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\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 */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\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 */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\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 */\n function 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\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\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 */\n function 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\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\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 */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` 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 */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\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 */\n function 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\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 */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\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 */\n function 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\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\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 */\n function 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\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object 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 `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\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 */\n function 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\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection 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 */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\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 */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\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 */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\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 */\n function 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\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects 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 `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object 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 `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\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 */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * 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 */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\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 */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\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 */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\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 */\n var 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\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\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 */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((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\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\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 */\n function 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\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\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 */\n function 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\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\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 */\n function 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\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\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 */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\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 */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\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 */\n function 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\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\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 */\n function 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\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 */\n function 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\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\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 */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\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 */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\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 */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\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 an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\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 */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an 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 an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or 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 boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\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 */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` 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 date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\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 DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\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 empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.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 * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\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 * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\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 an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\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 */\n function 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\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\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 an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\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 */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\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 */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\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 */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\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 map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\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 native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\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 `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\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 nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\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 number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` 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 regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\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 safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\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 set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\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 */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\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 */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\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 weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\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 weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is 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 convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\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 */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.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 `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.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 `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.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 `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.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 `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\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 */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\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 = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\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 */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\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 * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\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 */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\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 */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\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 of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\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 values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\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 */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\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 kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\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 */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n // and escape the comment, thus injecting code that gets evaled.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/\\s/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Throw an error if a forbidden character was found in `variable`, to prevent\n // potential command injection attacks.\n else if (reForbiddenIdentifierChars.test(variable)) {\n throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n }\n\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return baseTrim(string);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.slice(0, trimmedEndIndex(string) + 1);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\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 */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n *\n * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\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 */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","\nvar space = require('to-space-case')\n\n/**\n * Export.\n */\n\nmodule.exports = toCamelCase\n\n/**\n * Convert a `string` to camel case.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction toCamelCase(string) {\n return space(string).replace(/\\s(\\w)/g, function (matches, letter) {\n return letter.toUpperCase()\n })\n}\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n","import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n const noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`]) +\n parseFloat(styles[`border${sideB}Width`])\n );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE(10)\n ? (parseInt(html[`offset${axis}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n : 0 \n );\n}\n\nexport default function getWindowSizes(document) {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n }\n else {\n rect = element.getBoundingClientRect();\n }\n }\n catch(e){}\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n const width =\n sizes.width || element.clientWidth || result.width;\n const height =\n sizes.height || element.clientHeight || result.height;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n const isIE10 = runIsIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if(fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop);\n const marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n const parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n let el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement,\n fixedPosition = false\n) {\n // NOTE: 1 DOM access here\n\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport' ) {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\n\n else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent,\n fixedPosition\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes(popper.ownerDocument);\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n const isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n return boundaries;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const window = element.ownerDocument.defaultView;\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference,\n this.options.positionFixed\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n\n data.offsets.popper.position = this.options.positionFixed\n ? 'fixed'\n : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n const offsets = getRoundedOffsets(\n data,\n window.devicePixelRatio < 2 || !isFirefox\n );\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\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","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement,\n data.positionFixed\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n const flippedVariationByRef =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n // flips variation if popper content overflows boundaries\n const flippedVariationByContent =\n !!options.flipVariationsByContent &&\n ((isVertical && variation === 'start' && overflowsRight) ||\n (isVertical && variation === 'end' && overflowsLeft) ||\n (!isVertical && variation === 'start' && overflowsBottom) ||\n (!isVertical && variation === 'end' && overflowsTop));\n\n const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false,\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n const transformProp = getSupportedPropertyName('transform');\n const popperStyles = data.instance.popper.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = popperStyles;\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement,\n data.positionFixed\n );\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side =\n ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n const { popper, reference } = data.offsets;\n const { round, floor } = Math;\n const noRound = v => v;\n \n const referenceWidth = round(reference.width);\n const popperWidth = round(popper.width);\n \n const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n const isVariation = data.placement.indexOf('-') !== -1;\n const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n const horizontalToInteger = !shouldRound\n ? noRound\n : isVertical || isVariation || sameWidthParity\n ? round\n : floor;\n const verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(\n bothOddWidth && !isVariation && shouldRound\n ? popper.left - 1\n : popper.left\n ),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right),\n };\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = require('./implementation');\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default __webpack_public_path__ + \"5d8192fda2d290cb96c5609562171173.js\";","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n// As defined on the list of supported events: https://reactjs.org/docs/events.html\nexport var clipboardEvents = ['onCopy', 'onCut', 'onPaste'];\nexport var compositionEvents = [\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate',\n];\nexport var focusEvents = ['onFocus', 'onBlur'];\nexport var formEvents = ['onInput', 'onInvalid', 'onReset', 'onSubmit'];\nexport var imageEvents = ['onLoad', 'onError'];\nexport var keyboardEvents = ['onKeyDown', 'onKeyPress', 'onKeyUp'];\nexport var mediaEvents = [\n 'onAbort',\n 'onCanPlay',\n 'onCanPlayThrough',\n 'onDurationChange',\n 'onEmptied',\n 'onEncrypted',\n 'onEnded',\n 'onError',\n 'onLoadedData',\n 'onLoadedMetadata',\n 'onLoadStart',\n 'onPause',\n 'onPlay',\n 'onPlaying',\n 'onProgress',\n 'onRateChange',\n 'onSeeked',\n 'onSeeking',\n 'onStalled',\n 'onSuspend',\n 'onTimeUpdate',\n 'onVolumeChange',\n 'onWaiting',\n];\nexport var mouseEvents = [\n 'onClick',\n 'onContextMenu',\n 'onDoubleClick',\n 'onMouseDown',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n];\nexport var dragEvents = [\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n];\nexport var selectionEvents = ['onSelect'];\nexport var touchEvents = ['onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart'];\nexport var pointerEvents = [\n 'onPointerDown',\n 'onPointerMove',\n 'onPointerUp',\n 'onPointerCancel',\n 'onGotPointerCapture',\n 'onLostPointerCapture',\n 'onPointerEnter',\n 'onPointerLeave',\n 'onPointerOver',\n 'onPointerOut',\n];\nexport var uiEvents = ['onScroll'];\nexport var wheelEvents = ['onWheel'];\nexport var animationEvents = [\n 'onAnimationStart',\n 'onAnimationEnd',\n 'onAnimationIteration',\n];\nexport var transitionEvents = ['onTransitionEnd'];\nexport var otherEvents = ['onToggle'];\nexport var changeEvents = ['onChange'];\nexport var allEvents = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], clipboardEvents, true), compositionEvents, true), focusEvents, true), formEvents, true), imageEvents, true), keyboardEvents, true), mediaEvents, true), mouseEvents, true), dragEvents, true), selectionEvents, true), touchEvents, true), pointerEvents, true), uiEvents, true), wheelEvents, true), animationEvents, true), transitionEvents, true), changeEvents, true), otherEvents, true);\n/**\n * Returns an object with on-event callback props curried with provided args.\n * @param {Object} props Props passed to a component.\n * @param {Function=} getArgs A function that returns argument(s) on-event callbacks\n * shall be curried with.\n */\nexport default function makeEventProps(props, getArgs) {\n var eventProps = {};\n allEvents.forEach(function (eventName) {\n var eventHandler = props[eventName];\n if (!eventHandler) {\n return;\n }\n if (getArgs) {\n eventProps[eventName] = (function (event) {\n return eventHandler(event, getArgs(eventName));\n });\n }\n else {\n eventProps[eventName] = eventHandler;\n }\n });\n return eventProps;\n}\n","export default function makeCancellablePromise(promise) {\n var isCancelled = false;\n var wrappedPromise = new Promise(function (resolve, reject) {\n promise\n .then(function (value) { return !isCancelled && resolve(value); })\n .catch(function (error) { return !isCancelled && reject(error); });\n });\n return {\n promise: wrappedPromise,\n cancel: function () {\n isCancelled = true;\n },\n };\n}\n","export default function mergeClassNames() {\n return Array.prototype.slice.call(arguments).reduce(function (classList, arg) {\n return classList.concat(arg);\n }, []).filter(function (arg) {\n return typeof arg === 'string';\n }).join(' ');\n}","import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);","import React from 'react';\nimport PropTypes from 'prop-types';\nexport default function Message(_ref) {\n var children = _ref.children,\n type = _ref.type;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"react-pdf__message react-pdf__message--\".concat(type)\n }, children);\n}\nMessage.propTypes = {\n children: PropTypes.node,\n type: PropTypes.oneOf(['error', 'loading', 'no-data']).isRequired\n};","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\n\n/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport invariant from 'tiny-invariant';\nvar DEFAULT_LINK_REL = 'noopener noreferrer nofollow';\n\nvar LinkService = /*#__PURE__*/function () {\n function LinkService() {\n _classCallCheck(this, LinkService);\n\n this.externalLinkTarget = null;\n this.externalLinkRel = null;\n }\n\n _createClass(LinkService, [{\n key: \"setDocument\",\n value: function setDocument(pdfDocument) {\n this.pdfDocument = pdfDocument;\n }\n }, {\n key: \"setViewer\",\n value: function setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n }, {\n key: \"setExternalLinkRel\",\n value: function setExternalLinkRel(externalLinkRel) {\n this.externalLinkRel = externalLinkRel;\n }\n }, {\n key: \"setExternalLinkTarget\",\n value: function setExternalLinkTarget(externalLinkTarget) {\n this.externalLinkTarget = externalLinkTarget;\n }\n }, {\n key: \"setHistory\",\n value: function setHistory() {}\n }, {\n key: \"pagesCount\",\n get: function get() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n }\n }, {\n key: \"page\",\n get: function get() {\n return this.pdfViewer.currentPageNumber;\n },\n set: function set(value) {\n this.pdfViewer.currentPageNumber = value;\n }\n }, {\n key: \"rotation\",\n get: function get() {\n return 0;\n },\n set: function set(value) {}\n }, {\n key: \"goToDestination\",\n value: function goToDestination(dest) {\n var _this = this;\n\n new Promise(function (resolve) {\n if (typeof dest === 'string') {\n _this.pdfDocument.getDestination(dest).then(resolve);\n } else if (Array.isArray(dest)) {\n resolve(dest);\n } else {\n dest.then(resolve);\n }\n }).then(function (explicitDest) {\n invariant(Array.isArray(explicitDest), \"\\\"\".concat(explicitDest, \"\\\" is not a valid destination array.\"));\n var destRef = explicitDest[0];\n new Promise(function (resolve) {\n if (destRef instanceof Object) {\n _this.pdfDocument.getPageIndex(destRef).then(function (pageIndex) {\n resolve(pageIndex);\n })[\"catch\"](function () {\n invariant(false, \"\\\"\".concat(destRef, \"\\\" is not a valid page reference.\"));\n });\n } else if (typeof destRef === 'number') {\n resolve(destRef);\n } else {\n invariant(false, \"\\\"\".concat(destRef, \"\\\" is not a valid destination reference.\"));\n }\n }).then(function (pageIndex) {\n var pageNumber = pageIndex + 1;\n invariant(pageNumber >= 1 && pageNumber <= _this.pagesCount, \"\\\"\".concat(pageNumber, \"\\\" is not a valid page number.\"));\n\n _this.pdfViewer.scrollPageIntoView({\n dest: dest,\n pageIndex: pageIndex,\n pageNumber: pageNumber\n });\n });\n });\n }\n }, {\n key: \"navigateTo\",\n value: function navigateTo(dest) {\n this.goToDestination(dest);\n }\n }, {\n key: \"goToPage\",\n value: function goToPage() {}\n }, {\n key: \"addLinkAttributes\",\n value: function addLinkAttributes(link, url, newWindow) {\n link.href = url;\n link.rel = this.externalLinkRel || DEFAULT_LINK_REL;\n link.target = newWindow ? '_blank' : this.externalLinkTarget || '';\n }\n }, {\n key: \"getDestinationHash\",\n value: function getDestinationHash() {\n return '#';\n }\n }, {\n key: \"getAnchorUrl\",\n value: function getAnchorUrl() {\n return '#';\n }\n }, {\n key: \"setHash\",\n value: function setHash() {}\n }, {\n key: \"executeNamedAction\",\n value: function executeNamedAction() {}\n }, {\n key: \"cachePageRef\",\n value: function cachePageRef() {}\n }, {\n key: \"isPageVisible\",\n value: function isPageVisible() {\n return true;\n }\n }, {\n key: \"isPageCached\",\n value: function isPageCached() {\n return true;\n }\n }]);\n\n return LinkService;\n}();\n\nexport { LinkService as default };","// As defined in https://github.com/mozilla/pdf.js/blob/d9fac3459609a807be6506fb3441b5da4b154d14/src/shared/util.js#L371-L374\nvar PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nexport default PasswordResponses;","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\n/**\n * Checks if we're running in a browser environment.\n */\n\nexport var isBrowser = typeof window !== 'undefined';\n/**\n * Checks whether we're running from a local file system.\n */\n\nexport var isLocalFileSystem = isBrowser && window.location.protocol === 'file:';\n/**\n * Checks whether a variable is defined.\n *\n * @param {*} variable Variable to check\n */\n\nexport function isDefined(variable) {\n return typeof variable !== 'undefined';\n}\n/**\n * Checks whether a variable is defined and not null.\n *\n * @param {*} variable Variable to check\n */\n\nexport function isProvided(variable) {\n return isDefined(variable) && variable !== null;\n}\n/**\n * Checkes whether a variable provided is a string.\n *\n * @param {*} variable Variable to check\n */\n\nexport function isString(variable) {\n return typeof variable === 'string';\n}\n/**\n * Checks whether a variable provided is an ArrayBuffer.\n *\n * @param {*} variable Variable to check\n */\n\nexport function isArrayBuffer(variable) {\n return variable instanceof ArrayBuffer;\n}\n/**\n * Checkes whether a variable provided is a Blob.\n *\n * @param {*} variable Variable to check\n */\n\nexport function isBlob(variable) {\n invariant(isBrowser, 'isBlob can only be used in a browser environment');\n return variable instanceof Blob;\n}\n/**\n * Checkes whether a variable provided is a File.\n *\n * @param {*} variable Variable to check\n */\n\nexport function isFile(variable) {\n invariant(isBrowser, 'isFile can only be used in a browser environment');\n return variable instanceof File;\n}\n/**\n * Checks whether a string provided is a data URI.\n *\n * @param {string} str String to check\n */\n\nexport function isDataURI(str) {\n return isString(str) && /^data:/.test(str);\n}\nexport function dataURItoByteString(dataURI) {\n invariant(isDataURI(dataURI), 'Invalid data URI.');\n\n var _dataURI$split = dataURI.split(','),\n _dataURI$split2 = _slicedToArray(_dataURI$split, 2),\n headersString = _dataURI$split2[0],\n dataString = _dataURI$split2[1];\n\n var headers = headersString.split(';');\n\n if (headers.indexOf('base64') !== -1) {\n return atob(dataString);\n }\n\n return unescape(dataString);\n}\nexport function getPixelRatio() {\n return isBrowser && window.devicePixelRatio || 1;\n}\nvar allowFileAccessFromFilesTip = 'On Chromium based browsers, you can use --allow-file-access-from-files flag for debugging purposes.';\nexport function displayCORSWarning() {\n warning(!isLocalFileSystem, \"Loading PDF as base64 strings/URLs may not work on protocols other than HTTP/HTTPS. \".concat(allowFileAccessFromFilesTip));\n}\nexport function displayWorkerWarning() {\n warning(!isLocalFileSystem, \"Loading PDF.js worker may not work on protocols other than HTTP/HTTPS. \".concat(allowFileAccessFromFilesTip));\n}\nexport function cancelRunningTask(runningTask) {\n if (runningTask && runningTask.cancel) runningTask.cancel();\n}\nexport function makePageCallback(page, scale) {\n Object.defineProperty(page, 'width', {\n get: function get() {\n return this.view[2] * scale;\n },\n configurable: true\n });\n Object.defineProperty(page, 'height', {\n get: function get() {\n return this.view[3] * scale;\n },\n configurable: true\n });\n Object.defineProperty(page, 'originalWidth', {\n get: function get() {\n return this.view[2];\n },\n configurable: true\n });\n Object.defineProperty(page, 'originalHeight', {\n get: function get() {\n return this.view[3];\n },\n configurable: true\n });\n return page;\n}\nexport function isCancelException(error) {\n return error.name === 'RenderingCancelledException';\n}\nexport function loadFromFile(file) {\n return new Promise(function (resolve, reject) {\n var reader = new FileReader();\n\n reader.onload = function () {\n return resolve(new Uint8Array(reader.result));\n };\n\n reader.onerror = function (event) {\n switch (event.target.error.code) {\n case event.target.error.NOT_FOUND_ERR:\n return reject(new Error('Error while reading a file: File not found.'));\n\n case event.target.error.NOT_READABLE_ERR:\n return reject(new Error('Error while reading a file: File not readable.'));\n\n case event.target.error.SECURITY_ERR:\n return reject(new Error('Error while reading a file: Security error.'));\n\n case event.target.error.ABORT_ERR:\n return reject(new Error('Error while reading a file: Aborted.'));\n\n default:\n return reject(new Error('Error while reading a file.'));\n }\n };\n\n reader.readAsArrayBuffer(file);\n return null;\n });\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport PropTypes from 'prop-types';\nimport { mouseEvents, touchEvents, keyboardEvents } from 'make-event-props';\nimport { isDefined } from './utils';\nimport LinkService from '../LinkService';\nexport var eventProps = function () {\n var result = {};\n [].concat(_toConsumableArray(mouseEvents), _toConsumableArray(touchEvents), _toConsumableArray(keyboardEvents)).forEach(function (eventName) {\n result[eventName] = PropTypes.func;\n });\n return result;\n}();\nvar fileTypes = [PropTypes.string, PropTypes.instanceOf(ArrayBuffer), PropTypes.shape({\n data: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n httpHeaders: PropTypes.object,\n range: PropTypes.object,\n url: PropTypes.string,\n withCredentials: PropTypes.bool\n})];\n\nif (typeof File !== 'undefined') {\n fileTypes.push(PropTypes.instanceOf(File));\n}\n\nif (typeof Blob !== 'undefined') {\n fileTypes.push(PropTypes.instanceOf(Blob));\n}\n\nexport var isClassName = PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]);\nexport var isFile = PropTypes.oneOfType(fileTypes);\nexport var isLinkService = PropTypes.instanceOf(LinkService);\nexport var isLinkTarget = PropTypes.oneOf(['_self', '_blank', '_parent', '_top']);\nexport var isPage = PropTypes.shape({\n _transport: PropTypes.shape({\n fontLoader: PropTypes.object.isRequired\n }).isRequired,\n commonObjs: PropTypes.shape({\n _objs: PropTypes.object.isRequired\n }).isRequired,\n getAnnotations: PropTypes.func.isRequired,\n getTextContent: PropTypes.func.isRequired,\n getViewport: PropTypes.func.isRequired,\n render: PropTypes.func.isRequired\n});\nexport var isPageIndex = function isPageIndex(props, propName, componentName) {\n var pageIndex = props[propName],\n pageNumber = props.pageNumber,\n pdf = props.pdf;\n\n if (!isDefined(pdf)) {\n return null;\n }\n\n if (isDefined(pageIndex)) {\n if (typeof pageIndex !== 'number') {\n return new Error(\"`\".concat(propName, \"` of type `\").concat(_typeof(pageIndex), \"` supplied to `\").concat(componentName, \"`, expected `number`.\"));\n }\n\n if (pageIndex < 0) {\n return new Error(\"Expected `\".concat(propName, \"` to be greater or equal to 0.\"));\n }\n\n var numPages = pdf.numPages;\n\n if (pageIndex + 1 > numPages) {\n return new Error(\"Expected `\".concat(propName, \"` to be less or equal to \").concat(numPages - 1, \".\"));\n }\n } else if (!isDefined(pageNumber)) {\n return new Error(\"`\".concat(propName, \"` not supplied. Either pageIndex or pageNumber must be supplied to `\").concat(componentName, \"`.\"));\n } // Everything is fine\n\n\n return null;\n};\nexport var isPageNumber = function isPageNumber(props, propName, componentName) {\n var pageNumber = props[propName],\n pageIndex = props.pageIndex,\n pdf = props.pdf;\n\n if (!isDefined(pdf)) {\n return null;\n }\n\n if (isDefined(pageNumber)) {\n if (typeof pageNumber !== 'number') {\n return new Error(\"`\".concat(propName, \"` of type `\").concat(_typeof(pageNumber), \"` supplied to `\").concat(componentName, \"`, expected `number`.\"));\n }\n\n if (pageNumber < 1) {\n return new Error(\"Expected `\".concat(propName, \"` to be greater or equal to 1.\"));\n }\n\n var numPages = pdf.numPages;\n\n if (pageNumber > numPages) {\n return new Error(\"Expected `\".concat(propName, \"` to be less or equal to \").concat(numPages, \".\"));\n }\n } else if (!isDefined(pageIndex)) {\n return new Error(\"`\".concat(propName, \"` not supplied. Either pageIndex or pageNumber must be supplied to `\").concat(componentName, \"`.\"));\n } // Everything is fine\n\n\n return null;\n};\nexport var isPdf = PropTypes.oneOfType([PropTypes.shape({\n getDestination: PropTypes.func.isRequired,\n getOutline: PropTypes.func.isRequired,\n getPage: PropTypes.func.isRequired,\n numPages: PropTypes.number.isRequired\n}), PropTypes.bool]);\nexport var isRef = PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.any\n})]);\nexport var isRenderMode = PropTypes.oneOf(['canvas', 'none', 'svg']);\nexport var isRotate = PropTypes.oneOf([0, 90, 180, 270]);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"url\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/**\n * Loads a PDF document. Passes it to all children.\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport makeEventProps from 'make-event-props';\nimport makeCancellable from 'make-cancellable-promise';\nimport mergeClassNames from 'merge-class-names';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport * as pdfjs from 'pdfjs-dist/legacy/build/pdf';\nimport DocumentContext from './DocumentContext';\nimport Message from './Message';\nimport LinkService from './LinkService';\nimport PasswordResponses from './PasswordResponses';\nimport { cancelRunningTask, dataURItoByteString, displayCORSWarning, isArrayBuffer, isBlob, isBrowser, isDataURI, isFile, loadFromFile } from './shared/utils';\nimport { eventProps, isClassName, isFile as isFileProp, isRef } from './shared/propTypes';\nvar PDFDataRangeTransport = pdfjs.PDFDataRangeTransport;\n\nvar Document = /*#__PURE__*/function (_PureComponent) {\n _inherits(Document, _PureComponent);\n\n var _super = _createSuper(Document);\n\n function Document() {\n var _this;\n\n _classCallCheck(this, Document);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n pdf: null\n });\n\n _defineProperty(_assertThisInitialized(_this), \"viewer\", {\n scrollPageIntoView: function scrollPageIntoView(_ref) {\n var dest = _ref.dest,\n pageIndex = _ref.pageIndex,\n pageNumber = _ref.pageNumber;\n // Handling jumping to internal links target\n var onItemClick = _this.props.onItemClick; // First, check if custom handling of onItemClick was provided\n\n if (onItemClick) {\n onItemClick({\n dest: dest,\n pageIndex: pageIndex,\n pageNumber: pageNumber\n });\n return;\n } // If not, try to look for target page within the <Document>.\n\n\n var page = _this.pages[pageIndex];\n\n if (page) {\n // Scroll to the page automatically\n page.scrollIntoView();\n return;\n }\n\n warning(false, \"An internal link leading to page \".concat(pageNumber, \" was clicked, but neither <Document> was provided with onItemClick nor it was able to find the page within itself. Either provide onItemClick to <Document> and handle navigating by yourself or ensure that all pages are rendered within <Document>.\"));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"linkService\", new LinkService());\n\n _defineProperty(_assertThisInitialized(_this), \"loadDocument\", function () {\n // If another rendering is in progress, let's cancel it\n cancelRunningTask(_this.runningTask); // If another loading is in progress, let's destroy it\n\n if (_this.loadingTask) _this.loadingTask.destroy();\n var cancellable = makeCancellable(_this.findDocumentSource());\n _this.runningTask = cancellable;\n cancellable.promise.then(function (source) {\n _this.onSourceSuccess();\n\n if (!source) {\n return;\n }\n\n _this.setState(function (prevState) {\n if (!prevState.pdf) {\n return null;\n }\n\n return {\n pdf: null\n };\n });\n\n var _this$props = _this.props,\n options = _this$props.options,\n onLoadProgress = _this$props.onLoadProgress,\n onPassword = _this$props.onPassword;\n _this.loadingTask = pdfjs.getDocument(_objectSpread(_objectSpread({}, source), options));\n _this.loadingTask.onPassword = onPassword;\n\n if (onLoadProgress) {\n _this.loadingTask.onProgress = onLoadProgress;\n }\n\n var cancellable = makeCancellable(_this.loadingTask.promise);\n _this.runningTask = cancellable;\n cancellable.promise.then(function (pdf) {\n _this.setState(function (prevState) {\n if (prevState.pdf && prevState.pdf.fingerprint === pdf.fingerprint) {\n return null;\n }\n\n return {\n pdf: pdf\n };\n }, _this.onLoadSuccess);\n })[\"catch\"](function (error) {\n _this.onLoadError(error);\n });\n })[\"catch\"](function (error) {\n _this.onSourceError(error);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setupLinkService\", function () {\n var _this$props2 = _this.props,\n externalLinkRel = _this$props2.externalLinkRel,\n externalLinkTarget = _this$props2.externalLinkTarget;\n\n _this.linkService.setViewer(_this.viewer);\n\n _this.linkService.setExternalLinkRel(externalLinkRel);\n\n _this.linkService.setExternalLinkTarget(externalLinkTarget);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSourceSuccess\", function () {\n var onSourceSuccess = _this.props.onSourceSuccess;\n if (onSourceSuccess) onSourceSuccess();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSourceError\", function (error) {\n warning(error);\n var onSourceError = _this.props.onSourceError;\n if (onSourceError) onSourceError(error);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onLoadSuccess\", function () {\n var onLoadSuccess = _this.props.onLoadSuccess;\n var pdf = _this.state.pdf;\n if (onLoadSuccess) onLoadSuccess(pdf);\n _this.pages = new Array(pdf.numPages);\n\n _this.linkService.setDocument(pdf);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onLoadError\", function (error) {\n _this.setState({\n pdf: false\n });\n\n warning(error);\n var onLoadError = _this.props.onLoadError;\n if (onLoadError) onLoadError(error);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"findDocumentSource\", function () {\n return new Promise(function (resolve) {\n var file = _this.props.file;\n\n if (!file) {\n resolve(null);\n } // File is a string\n\n\n if (typeof file === 'string') {\n if (isDataURI(file)) {\n var fileByteString = dataURItoByteString(file);\n resolve({\n data: fileByteString\n });\n }\n\n displayCORSWarning();\n resolve({\n url: file\n });\n } // File is PDFDataRangeTransport\n\n\n if (file instanceof PDFDataRangeTransport) {\n resolve({\n range: file\n });\n } // File is an ArrayBuffer\n\n\n if (isArrayBuffer(file)) {\n resolve({\n data: file\n });\n }\n /**\n * The cases below are browser-only.\n * If you're running on a non-browser environment, these cases will be of no use.\n */\n\n\n if (isBrowser) {\n // File is a Blob\n if (isBlob(file) || isFile(file)) {\n loadFromFile(file).then(function (data) {\n resolve({\n data: data\n });\n });\n return;\n }\n } // At this point, file must be an object\n\n\n invariant(_typeof(file) === 'object', 'Invalid parameter in file, need either Uint8Array, string or a parameter object');\n invariant(file.url || file.data || file.range, 'Invalid parameter object: need either .data, .range or .url'); // File .url is a string\n\n if (typeof file.url === 'string') {\n if (isDataURI(file.url)) {\n var url = file.url,\n otherParams = _objectWithoutProperties(file, _excluded);\n\n var _fileByteString = dataURItoByteString(url);\n\n resolve(_objectSpread({\n data: _fileByteString\n }, otherParams));\n }\n\n displayCORSWarning();\n }\n\n resolve(file);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"registerPage\", function (pageIndex, ref) {\n _this.pages[pageIndex] = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"unregisterPage\", function (pageIndex) {\n delete _this.pages[pageIndex];\n });\n\n return _this;\n }\n\n _createClass(Document, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.loadDocument();\n this.setupLinkService();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var file = this.props.file;\n\n if (file !== prevProps.file) {\n this.loadDocument();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n // If rendering is in progress, let's cancel it\n cancelRunningTask(this.runningTask); // If loading is in progress, let's destroy it\n\n if (this.loadingTask) this.loadingTask.destroy();\n }\n }, {\n key: \"childContext\",\n get: function get() {\n var linkService = this.linkService,\n registerPage = this.registerPage,\n unregisterPage = this.unregisterPage;\n var _this$props3 = this.props,\n imageResourcesPath = _this$props3.imageResourcesPath,\n renderMode = _this$props3.renderMode,\n rotate = _this$props3.rotate;\n var pdf = this.state.pdf;\n return {\n imageResourcesPath: imageResourcesPath,\n linkService: linkService,\n pdf: pdf,\n registerPage: registerPage,\n renderMode: renderMode,\n rotate: rotate,\n unregisterPage: unregisterPage\n };\n }\n }, {\n key: \"eventProps\",\n get: function get() {\n var _this2 = this;\n\n return makeEventProps(this.props, function () {\n return _this2.state.pdf;\n });\n }\n /**\n * Called when a document source is resolved correctly\n */\n\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var children = this.props.children;\n return /*#__PURE__*/React.createElement(DocumentContext.Provider, {\n value: this.childContext\n }, children);\n }\n }, {\n key: \"renderContent\",\n value: function renderContent() {\n var file = this.props.file;\n var pdf = this.state.pdf;\n\n if (!file) {\n var noData = this.props.noData;\n return /*#__PURE__*/React.createElement(Message, {\n type: \"no-data\"\n }, typeof noData === 'function' ? noData() : noData);\n }\n\n if (pdf === null) {\n var loading = this.props.loading;\n return /*#__PURE__*/React.createElement(Message, {\n type: \"loading\"\n }, typeof loading === 'function' ? loading() : loading);\n }\n\n if (pdf === false) {\n var error = this.props.error;\n return /*#__PURE__*/React.createElement(Message, {\n type: \"error\"\n }, typeof error === 'function' ? error() : error);\n }\n\n return this.renderChildren();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n className = _this$props4.className,\n inputRef = _this$props4.inputRef;\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: mergeClassNames('react-pdf__Document', className),\n ref: inputRef\n }, this.eventProps), this.renderContent());\n }\n }]);\n\n return Document;\n}(PureComponent);\n\nexport { Document as default };\nDocument.defaultProps = {\n error: 'Failed to load PDF file.',\n loading: 'Loading PDF…',\n noData: 'No PDF file specified.',\n onPassword: function onPassword(callback, reason) {\n switch (reason) {\n case PasswordResponses.NEED_PASSWORD:\n {\n // eslint-disable-next-line no-alert\n var password = prompt('Enter the password to open this PDF file.');\n callback(password);\n break;\n }\n\n case PasswordResponses.INCORRECT_PASSWORD:\n {\n // eslint-disable-next-line no-alert\n var _password = prompt('Invalid password. Please try again.');\n\n callback(_password);\n break;\n }\n\n default:\n }\n }\n};\nvar isFunctionOrNode = PropTypes.oneOfType([PropTypes.func, PropTypes.node]);\nDocument.propTypes = _objectSpread(_objectSpread({}, eventProps), {}, {\n children: PropTypes.node,\n className: isClassName,\n error: isFunctionOrNode,\n externalLinkRel: PropTypes.string,\n externalLinkTarget: PropTypes.string,\n file: isFileProp,\n imageResourcesPath: PropTypes.string,\n inputRef: isRef,\n loading: isFunctionOrNode,\n noData: isFunctionOrNode,\n onItemClick: PropTypes.func,\n onLoadError: PropTypes.func,\n onLoadProgress: PropTypes.func,\n onLoadSuccess: PropTypes.func,\n onPassword: PropTypes.func,\n onSourceError: PropTypes.func,\n onSourceSuccess: PropTypes.func,\n rotate: PropTypes.number\n});","import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\n\nvar Ref = /*#__PURE__*/function () {\n function Ref(_ref) {\n var num = _ref.num,\n gen = _ref.gen;\n\n _classCallCheck(this, Ref);\n\n this.num = num;\n this.gen = gen;\n }\n\n _createClass(Ref, [{\n key: \"toString\",\n value: function toString() {\n var str = \"\".concat(this.num, \"R\");\n\n if (this.gen !== 0) {\n str += this.gen;\n }\n\n return str;\n }\n }]);\n\n return Ref;\n}();\n\nexport { Ref as default };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"item\"];\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport DocumentContext from './DocumentContext';\nimport OutlineContext from './OutlineContext';\nimport Ref from './Ref';\nimport { isDefined } from './shared/utils';\nimport { isPdf } from './shared/propTypes';\nexport var OutlineItemInternal = /*#__PURE__*/function (_PureComponent) {\n _inherits(OutlineItemInternal, _PureComponent);\n\n var _super = _createSuper(OutlineItemInternal);\n\n function OutlineItemInternal() {\n var _this;\n\n _classCallCheck(this, OutlineItemInternal);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"getDestination\", function () {\n return new Promise(function (resolve, reject) {\n var _this$props = _this.props,\n item = _this$props.item,\n pdf = _this$props.pdf;\n\n if (!isDefined(_this.destination)) {\n if (typeof item.dest === 'string') {\n pdf.getDestination(item.dest).then(resolve)[\"catch\"](reject);\n } else {\n resolve(item.dest);\n }\n }\n\n return _this.destination;\n }).then(function (destination) {\n _this.destination = destination;\n return destination;\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getPageIndex\", function () {\n return new Promise(function (resolve, reject) {\n var pdf = _this.props.pdf;\n\n if (isDefined(_this.pageIndex)) {\n resolve(_this.pageIndex);\n }\n\n _this.getDestination().then(function (destination) {\n if (!destination) {\n return;\n }\n\n var _destination = _slicedToArray(destination, 1),\n ref = _destination[0];\n\n pdf.getPageIndex(new Ref(ref)).then(resolve)[\"catch\"](reject);\n });\n }).then(function (pageIndex) {\n _this.pageIndex = pageIndex;\n return _this.pageIndex;\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getPageNumber\", function () {\n return new Promise(function (resolve, reject) {\n if (isDefined(_this.pageNumber)) {\n resolve(_this.pageNumber);\n }\n\n _this.getPageIndex().then(function (pageIndex) {\n resolve(pageIndex + 1);\n })[\"catch\"](reject);\n }).then(function (pageNumber) {\n _this.pageNumber = pageNumber;\n return pageNumber;\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var onClick = _this.props.onClick;\n event.preventDefault();\n\n if (!onClick) {\n return false;\n }\n\n return Promise.all([_this.getDestination(), _this.getPageIndex(), _this.getPageNumber()]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 3),\n dest = _ref2[0],\n pageIndex = _ref2[1],\n pageNumber = _ref2[2];\n\n onClick({\n dest: dest,\n pageIndex: pageIndex,\n pageNumber: pageNumber\n });\n });\n });\n\n return _this;\n }\n\n _createClass(OutlineItemInternal, [{\n key: \"renderSubitems\",\n value: function renderSubitems() {\n var _this$props2 = this.props,\n item = _this$props2.item,\n otherProps = _objectWithoutProperties(_this$props2, _excluded);\n\n if (!item.items || !item.items.length) {\n return null;\n }\n\n var subitems = item.items;\n return /*#__PURE__*/React.createElement(\"ul\", null, subitems.map(function (subitem, subitemIndex) {\n return /*#__PURE__*/React.createElement(OutlineItemInternal, _extends({\n key: typeof subitem.destination === 'string' ? subitem.destination : subitemIndex,\n item: subitem\n }, otherProps));\n }));\n }\n }, {\n key: \"render\",\n value: function render() {\n var item = this.props.item;\n return /*#__PURE__*/React.createElement(\"li\", null, /*#__PURE__*/React.createElement(\"a\", {\n href: \"#\",\n onClick: this.onClick\n }, item.title), this.renderSubitems());\n }\n }]);\n\n return OutlineItemInternal;\n}(PureComponent);\nvar isDestination = PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.any)]);\nOutlineItemInternal.propTypes = {\n item: PropTypes.shape({\n dest: isDestination,\n items: PropTypes.arrayOf(PropTypes.shape({\n dest: isDestination,\n title: PropTypes.string\n })),\n title: PropTypes.string\n }).isRequired,\n onClick: PropTypes.func,\n pdf: isPdf.isRequired\n};\n\nvar OutlineItem = function OutlineItem(props) {\n return /*#__PURE__*/React.createElement(DocumentContext.Consumer, null, function (documentContext) {\n return /*#__PURE__*/React.createElement(OutlineContext.Consumer, null, function (outlineContext) {\n return /*#__PURE__*/React.createElement(OutlineItemInternal, _extends({}, documentContext, outlineContext, props));\n });\n });\n};\n\nexport default OutlineItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport makeCancellable from 'make-cancellable-promise';\nimport makeEventProps from 'make-event-props';\nimport mergeClassNames from 'merge-class-names';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport DocumentContext from './DocumentContext';\nimport OutlineContext from './OutlineContext';\nimport OutlineItem from './OutlineItem';\nimport { cancelRunningTask } from './shared/utils';\nimport { eventProps, isClassName, isPdf, isRef } from './shared/propTypes';\nexport var OutlineInternal = /*#__PURE__*/function (_PureComponent) {\n _inherits(OutlineInternal, _PureComponent);\n\n var _super = _createSuper(OutlineInternal);\n\n function OutlineInternal() {\n var _this;\n\n _classCallCheck(this, OutlineInternal);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n outline: null\n });\n\n _defineProperty(_assertThisInitialized(_this), \"loadOutline\", function () {\n var pdf = _this.props.pdf;\n\n _this.setState(function (prevState) {\n if (!prevState.outline) {\n return null;\n }\n\n return {\n outline: null\n };\n });\n\n var cancellable = makeCancellable(pdf.getOutline());\n _this.runningTask = cancellable;\n cancellable.promise.then(function (outline) {\n _this.setState({\n outline: outline\n }, _this.onLoadSuccess);\n })[\"catch\"](function (error) {\n _this.onLoadError(error);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onLoadSuccess\", function () {\n var onLoadSuccess = _this.props.onLoadSuccess;\n var outline = _this.state.outline;\n if (onLoadSuccess) onLoadSuccess(outline);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onLoadError\", function (error) {\n _this.setState({\n outline: false\n });\n\n warning(error);\n var onLoadError = _this.props.onLoadError;\n if (onLoadError) onLoadError(error);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onItemClick\", function (_ref) {\n var dest = _ref.dest,\n pageIndex = _ref.pageIndex,\n pageNumber = _ref.pageNumber;\n var onItemClick = _this.props.onItemClick;\n\n if (onItemClick) {\n onItemClick({\n dest: dest,\n pageIndex: pageIndex,\n pageNumber: pageNumber\n });\n }\n });\n\n return _this;\n }\n\n _createClass(OutlineInternal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var pdf = this.props.pdf;\n invariant(pdf, 'Attempted to load an outline, but no document was specified.');\n this.loadOutline();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var pdf = this.props.pdf;\n\n if (prevProps.pdf && pdf !== prevProps.pdf) {\n this.loadOutline();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n cancelRunningTask(this.runningTask);\n }\n }, {\n key: \"childContext\",\n get: function get() {\n return {\n onClick: this.onItemClick\n };\n }\n }, {\n key: \"eventProps\",\n get: function get() {\n var _this2 = this;\n\n return makeEventProps(this.props, function () {\n return _this2.state.outline;\n });\n }\n /**\n * Called when an outline is read successfully\n */\n\n }, {\n key: \"renderOutline\",\n value: function renderOutline() {\n var outline = this.state.outline;\n return /*#__PURE__*/React.createElement(\"ul\", null, outline.map(function (item, itemIndex) {\n return /*#__PURE__*/React.createElement(OutlineItem, {\n key: typeof item.destination === 'string' ? item.destination : itemIndex,\n item: item\n });\n }));\n }\n }, {\n key: \"render\",\n value: function render() {\n var pdf = this.props.pdf;\n var outline = this.state.outline;\n\n if (!pdf || !outline) {\n return null;\n }\n\n var _this$props = this.props,\n className = _this$props.className,\n inputRef = _this$props.inputRef;\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: mergeClassNames('react-pdf__Outline', className),\n ref: inputRef\n }, this.eventProps), /*#__PURE__*/React.createElement(OutlineContext.Provider, {\n value: this.childContext\n }, this.renderOutline()));\n }\n }]);\n\n return OutlineInternal;\n}(PureComponent);\nOutlineInternal.propTypes = _objectSpread({\n className: isClassName,\n inputRef: isRef,\n onItemClick: PropTypes.func,\n onLoadError: PropTypes.func,\n onLoadSuccess: PropTypes.func,\n pdf: isPdf\n}, eventProps);\n\nfunction Outline(props, ref) {\n return /*#__PURE__*/React.createElement(DocumentContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(OutlineInternal, _extends({\n ref: ref\n }, context, props));\n });\n}\n\nexport default /*#__PURE__*/React.forwardRef(Outline);","/**\n * A function that merges React refs into one.\n * Supports both functions and ref objects created using createRef() and useRef().\n *\n * Usage:\n * ```tsx\n * <div ref={mergeRefs(ref1, ref2, ref3)} />\n * ```\n *\n * @param {(React.Ref<T> | undefined)[]} inputRefs Array of refs\n * @returns {React.Ref<T> | React.RefCallback<T>} Merged refs\n */\nexport default function mergeRefs() {\n var inputRefs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n inputRefs[_i] = arguments[_i];\n }\n var filteredInputRefs = inputRefs.filter(Boolean);\n if (filteredInputRefs.length <= 1) {\n var firstRef = filteredInputRefs[0];\n return firstRef || null;\n }\n return function mergedRefs(ref) {\n filteredInputRefs.forEach(function (inputRef) {\n if (typeof inputRef === 'function') {\n inputRef(ref);\n }\n else if (inputRef) {\n inputRef.current = ref;\n }\n });\n };\n}\n","import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport React, { createRef, PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport mergeRefs from 'merge-refs';\nimport warning from 'tiny-warning';\nimport * as pdfjs from 'pdfjs-dist/legacy/build/pdf';\nimport PageContext from '../PageContext';\nimport { getPixelRatio, isCancelException, makePageCallback } from '../shared/utils';\nimport { isPage, isRef, isRotate } from '../shared/propTypes';\nvar ANNOTATION_MODE = pdfjs.AnnotationMode;\nexport var PageCanvasInternal = /*#__PURE__*/function (_PureComponent) {\n _inherits(PageCanvasInternal, _PureComponent);\n\n var _super = _createSuper(PageCanvasInternal);\n\n function PageCanvasInternal() {\n var _this;\n\n _classCallCheck(this, PageCanvasInternal);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"canvasElement\", /*#__PURE__*/createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"onRenderSuccess\", function () {\n _this.renderer = null;\n var _this$props = _this.props,\n onRenderSuccess = _this$props.onRenderSuccess,\n page = _this$props.page,\n scale = _this$props.scale;\n if (onRenderSuccess) onRenderSuccess(makePageCallback(page, scale));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onRenderError\", function (error) {\n if (isCancelException(error)) {\n return;\n }\n\n warning(error);\n var onRenderError = _this.props.onRenderError;\n if (onRenderError) onRenderError(error);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"drawPageOnCanvas\", function () {\n var canvas = _this.canvasElement.current;\n\n if (!canvas) {\n return null;\n }\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n renderViewport = _assertThisInitialize.renderViewport,\n viewport = _assertThisInitialize.viewport;\n\n var _this$props2 = _this.props,\n canvasBackground = _this$props2.canvasBackground,\n page = _this$props2.page,\n renderForms = _this$props2.renderForms;\n canvas.width = renderViewport.width;\n canvas.height = renderViewport.height;\n canvas.style.width = \"\".concat(Math.floor(viewport.width), \"px\");\n canvas.style.height = \"\".concat(Math.floor(viewport.height), \"px\");\n var renderContext = {\n annotationMode: renderForms ? ANNOTATION_MODE.ENABLE_FORMS : ANNOTATION_MODE.ENABLE,\n\n get canvasContext() {\n return canvas.getContext('2d');\n },\n\n viewport: renderViewport\n };\n\n if (canvasBackground) {\n renderContext.background = canvasBackground;\n } // If another render is in progress, let's cancel it\n\n\n _this.cancelRenderingTask();\n\n _this.renderer = page.render(renderContext);\n return _this.renderer.promise.then(_this.onRenderSuccess)[\"catch\"](_this.onRenderError);\n });\n\n return _this;\n }\n\n _createClass(PageCanvasInternal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.drawPageOnCanvas();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props3 = this.props,\n canvasBackground = _this$props3.canvasBackground,\n page = _this$props3.page,\n renderForms = _this$props3.renderForms;\n\n if (canvasBackground !== prevProps.canvasBackground || renderForms !== prevProps.renderForms) {\n // Ensures the canvas will be re-rendered from scratch. Otherwise all form data will stay.\n page.cleanup();\n this.drawPageOnCanvas();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.cancelRenderingTask();\n var canvas = this.canvasElement.current;\n /**\n * Zeroing the width and height cause most browsers to release graphics\n * resources immediately, which can greatly reduce memory consumption.\n */\n\n if (canvas) {\n canvas.width = 0;\n canvas.height = 0;\n }\n }\n }, {\n key: \"cancelRenderingTask\",\n value: function cancelRenderingTask() {\n if (this.renderer) {\n this.renderer.cancel();\n this.renderer = null;\n }\n }\n /**\n * Called when a page is rendered successfully.\n */\n\n }, {\n key: \"renderViewport\",\n get: function get() {\n var _this$props4 = this.props,\n page = _this$props4.page,\n rotate = _this$props4.rotate,\n scale = _this$props4.scale;\n var pixelRatio = getPixelRatio();\n return page.getViewport({\n scale: scale * pixelRatio,\n rotation: rotate\n });\n }\n }, {\n key: \"viewport\",\n get: function get() {\n var _this$props5 = this.props,\n page = _this$props5.page,\n rotate = _this$props5.rotate,\n scale = _this$props5.scale;\n return page.getViewport({\n scale: scale,\n rotation: rotate\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var canvasRef = this.props.canvasRef;\n return /*#__PURE__*/React.createElement(\"canvas\", {\n className: \"react-pdf__Page__canvas\",\n dir: \"ltr\",\n ref: mergeRefs(canvasRef, this.canvasElement),\n style: {\n display: 'block',\n userSelect: 'none'\n }\n });\n }\n }]);\n\n return PageCanvasInternal;\n}(PureComponent);\nPageCanvasInternal.propTypes = {\n canvasBackground: PropTypes.string,\n canvasRef: isRef,\n onRenderError: PropTypes.func,\n onRenderSuccess: PropTypes.func,\n page: isPage.isRequired,\n renderForms: PropTypes.bool,\n rotate: isRotate,\n scale: PropTypes.number.isRequired\n};\nexport default function PageCanvas(props) {\n return /*#__PURE__*/React.createElement(PageContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(PageCanvasInternal, _extends({}, context, props));\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\nimport * as pdfjs from 'pdfjs-dist/legacy/build/pdf';\nimport PageContext from '../PageContext';\nimport { isCancelException, makePageCallback } from '../shared/utils';\nimport { isPage, isRotate } from '../shared/propTypes';\nexport var PageSVGInternal = /*#__PURE__*/function (_PureComponent) {\n _inherits(PageSVGInternal, _PureComponent);\n\n var _super = _createSuper(PageSVGInternal);\n\n function PageSVGInternal() {\n var _this;\n\n _classCallCheck(this, PageSVGInternal);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n svg: null\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onRenderSuccess\", function () {\n _this.renderer = null;\n var _this$props = _this.props,\n onRenderSuccess = _this$props.onRenderSuccess,\n page = _this$props.page,\n scale = _this$props.scale;\n if (onRenderSuccess) onRenderSuccess(makePageCallback(page, scale));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onRenderError\", function (error) {\n if (isCancelException(error)) {\n return;\n }\n\n warning(error);\n var onRenderError = _this.props.onRenderError;\n if (onRenderError) onRenderError(error);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderSVG\", function () {\n var page = _this.props.page;\n _this.renderer = page.getOperatorList();\n return _this.renderer.then(function (operatorList) {\n var svgGfx = new pdfjs.SVGGraphics(page.commonObjs, page.objs);\n _this.renderer = svgGfx.getSVG(operatorList, _this.viewport).then(function (svg) {\n _this.setState({\n svg: svg\n }, _this.onRenderSuccess);\n })[\"catch\"](_this.onRenderError);\n })[\"catch\"](_this.onRenderError);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"drawPageOnContainer\", function (element) {\n var svg = _this.state.svg;\n\n if (!element || !svg) {\n return;\n } // Append SVG element to the main container, if this hasn't been done already\n\n\n if (!element.firstElementChild) {\n element.appendChild(svg);\n }\n\n var _this$viewport = _this.viewport,\n width = _this$viewport.width,\n height = _this$viewport.height;\n svg.setAttribute('width', width);\n svg.setAttribute('height', height);\n });\n\n return _this;\n }\n\n _createClass(PageSVGInternal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.renderSVG();\n }\n /**\n * Called when a page is rendered successfully.\n */\n\n }, {\n key: \"viewport\",\n get: function get() {\n var _this$props2 = this.props,\n page = _this$props2.page,\n rotate = _this$props2.rotate,\n scale = _this$props2.scale;\n return page.getViewport({\n scale: scale,\n rotation: rotate\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$viewport2 = this.viewport,\n width = _this$viewport2.width,\n height = _this$viewport2.height;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"react-pdf__Page__svg\" // Note: This cannot be shortened, as we need this function to be called with each render.\n ,\n ref: function ref(_ref) {\n return _this2.drawPageOnContainer(_ref);\n },\n style: {\n display: 'block',\n backgroundColor: 'white',\n overflow: 'hidden',\n width: width,\n height: height,\n userSelect: 'none'\n }\n });\n }\n }]);\n\n return PageSVGInternal;\n}(PureComponent);\nPageSVGInternal.propTypes = {\n onRenderError: PropTypes.func,\n onRenderSuccess: PropTypes.func,\n page: isPage.isRequired,\n rotate: isRotate,\n scale: PropTypes.number.isRequired\n};\nexport default function PageSVG(props) {\n return /*#__PURE__*/React.createElement(PageContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(PageSVGInternal, _extends({}, context, props));\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport React, { createRef, PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport PageContext from '../PageContext';\nimport { isPage, isRotate } from '../shared/propTypes';\nexport var TextLayerItemInternal = /*#__PURE__*/function (_PureComponent) {\n _inherits(TextLayerItemInternal, _PureComponent);\n\n var _super = _createSuper(TextLayerItemInternal);\n\n function TextLayerItemInternal() {\n var _this;\n\n _classCallCheck(this, TextLayerItemInternal);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"itemElement\", /*#__PURE__*/createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"getElementWidth\", function (element) {\n var _assertThisInitialize = _assertThisInitialized(_this),\n sideways = _assertThisInitialize.sideways;\n\n return element.getBoundingClientRect()[sideways ? 'height' : 'width'];\n });\n\n return _this;\n }\n\n _createClass(TextLayerItemInternal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.alignTextItem();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.alignTextItem();\n }\n }, {\n key: \"unrotatedViewport\",\n get: function get() {\n var _this$props = this.props,\n page = _this$props.page,\n scale = _this$props.scale;\n return page.getViewport({\n scale: scale\n });\n }\n /**\n * It might happen that the page is rotated by default. In such cases, we shouldn't rotate\n * text content.\n */\n\n }, {\n key: \"rotate\",\n get: function get() {\n var _this$props2 = this.props,\n page = _this$props2.page,\n rotate = _this$props2.rotate;\n return rotate - page.rotate;\n }\n }, {\n key: \"sideways\",\n get: function get() {\n var rotate = this.rotate;\n return rotate % 180 !== 0;\n }\n }, {\n key: \"defaultSideways\",\n get: function get() {\n var rotation = this.unrotatedViewport.rotation;\n return rotation % 180 !== 0;\n }\n }, {\n key: \"fontSize\",\n get: function get() {\n var transform = this.props.transform;\n var defaultSideways = this.defaultSideways;\n\n var _transform = _slicedToArray(transform, 2),\n fontHeightPx = _transform[0],\n fontWidthPx = _transform[1];\n\n return defaultSideways ? fontWidthPx : fontHeightPx;\n }\n }, {\n key: \"top\",\n get: function get() {\n var transform = this.props.transform;\n var viewport = this.unrotatedViewport,\n defaultSideways = this.defaultSideways;\n\n var _transform2 = _slicedToArray(transform, 6),\n\n /* fontHeightPx */\n\n /* fontWidthPx */\n offsetX = _transform2[2],\n offsetY = _transform2[3],\n x = _transform2[4],\n y = _transform2[5];\n\n var _viewport$viewBox = _slicedToArray(viewport.viewBox, 4),\n\n /* xMin */\n yMin\n /* xMax */\n = _viewport$viewBox[1],\n yMax = _viewport$viewBox[3];\n\n return defaultSideways ? x + offsetX + yMin : yMax - (y + offsetY);\n }\n }, {\n key: \"left\",\n get: function get() {\n var transform = this.props.transform;\n var viewport = this.unrotatedViewport,\n defaultSideways = this.defaultSideways;\n\n var _transform3 = _slicedToArray(transform, 6),\n\n /* fontHeightPx */\n\n /* fontWidthPx */\n\n /* offsetX */\n\n /* offsetY */\n x = _transform3[4],\n y = _transform3[5];\n\n var _viewport$viewBox2 = _slicedToArray(viewport.viewBox, 1),\n xMin = _viewport$viewBox2[0];\n\n return defaultSideways ? y - xMin : x - xMin;\n }\n }, {\n key: \"getFontData\",\n value: function getFontData(fontName) {\n var page = this.props.page;\n return new Promise(function (resolve) {\n page.commonObjs.get(fontName, resolve);\n });\n }\n }, {\n key: \"alignTextItem\",\n value: function alignTextItem() {\n var _this2 = this;\n\n var element = this.itemElement.current;\n\n if (!element) {\n return;\n }\n\n element.style.transform = '';\n var _this$props3 = this.props,\n fontName = _this$props3.fontName,\n scale = _this$props3.scale,\n width = _this$props3.width;\n element.style.fontFamily = \"\".concat(fontName, \", sans-serif\");\n this.getFontData(fontName).then(function (fontData) {\n var fallbackFontName = fontData ? fontData.fallbackName : 'sans-serif';\n element.style.fontFamily = \"\".concat(fontName, \", \").concat(fallbackFontName);\n var targetWidth = width * scale;\n\n var actualWidth = _this2.getElementWidth(element);\n\n var transform = \"scaleX(\".concat(targetWidth / actualWidth, \")\");\n var ascent = fontData ? fontData.ascent : 0;\n\n if (ascent) {\n transform += \" translateY(\".concat((1 - ascent) * 100, \"%)\");\n }\n\n element.style.transform = transform;\n element.style.WebkitTransform = transform;\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var fontSize = this.fontSize,\n top = this.top,\n left = this.left;\n var _this$props4 = this.props,\n customTextRenderer = _this$props4.customTextRenderer,\n scale = _this$props4.scale,\n text = _this$props4.str;\n return /*#__PURE__*/React.createElement(\"span\", {\n ref: this.itemElement,\n style: {\n height: '1em',\n fontFamily: 'sans-serif',\n fontSize: \"\".concat(fontSize * scale, \"px\"),\n position: 'absolute',\n top: \"\".concat(top * scale, \"px\"),\n left: \"\".concat(left * scale, \"px\"),\n transformOrigin: 'left bottom',\n whiteSpace: 'pre',\n pointerEvents: 'all'\n }\n }, customTextRenderer ? customTextRenderer(this.props) : text);\n }\n }]);\n\n return TextLayerItemInternal;\n}(PureComponent);\nTextLayerItemInternal.propTypes = {\n customTextRenderer: PropTypes.func,\n fontName: PropTypes.string.isRequired,\n itemIndex: PropTypes.number.isRequired,\n page: isPage.isRequired,\n rotate: isRotate,\n scale: PropTypes.number,\n str: PropTypes.string.isRequired,\n transform: PropTypes.arrayOf(PropTypes.number).isRequired,\n width: PropTypes.number.isRequired\n};\nexport default function TextLayerItem(props) {\n return /*#__PURE__*/React.createElement(PageContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(TextLayerItemInternal, _extends({}, context, props));\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport makeCancellable from 'make-cancellable-promise';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport PageContext from '../PageContext';\nimport TextLayerItem from './TextLayerItem';\nimport { cancelRunningTask } from '../shared/utils';\nimport { isPage, isRotate } from '../shared/propTypes';\nexport var TextLayerInternal = /*#__PURE__*/function (_PureComponent) {\n _inherits(TextLayerInternal, _PureComponent);\n\n var _super = _createSuper(TextLayerInternal);\n\n function TextLayerInternal() {\n var _this;\n\n _classCallCheck(this, TextLayerInternal);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n textItems: null\n });\n\n _defineProperty(_assertThisInitialized(_this), \"loadTextItems\", function () {\n var page = _this.props.page;\n var cancellable = makeCancellable(page.getTextContent());\n _this.runningTask = cancellable;\n cancellable.promise.then(function (_ref) {\n var textItems = _ref.items;\n\n _this.setState({\n textItems: textItems\n }, _this.onLoadSuccess);\n })[\"catch\"](function (error) {\n _this.onLoadError(error);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onLoadSuccess\", function () {\n var onGetTextSuccess = _this.props.onGetTextSuccess;\n var textItems = _this.state.textItems;\n if (onGetTextSuccess) onGetTextSuccess(textItems);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onLoadError\", function (error) {\n _this.setState({\n textItems: false\n });\n\n warning(error);\n var onGetTextError = _this.props.onGetTextError;\n if (onGetTextError) onGetTextError(error);\n });\n\n return _this;\n }\n\n _createClass(TextLayerInternal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var page = this.props.page;\n invariant(page, 'Attempted to load page text content, but no page was specified.');\n this.loadTextItems();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var page = this.props.page;\n\n if (prevProps.page && page !== prevProps.page) {\n this.loadTextItems();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n cancelRunningTask(this.runningTask);\n }\n }, {\n key: \"unrotatedViewport\",\n get: function get() {\n var _this$props = this.props,\n page = _this$props.page,\n scale = _this$props.scale;\n return page.getViewport({\n scale: scale\n });\n }\n /**\n * It might happen that the page is rotated by default. In such cases, we shouldn't rotate\n * text content.\n */\n\n }, {\n key: \"rotate\",\n get: function get() {\n var _this$props2 = this.props,\n page = _this$props2.page,\n rotate = _this$props2.rotate;\n return rotate - page.rotate;\n }\n }, {\n key: \"renderTextItems\",\n value: function renderTextItems() {\n var textItems = this.state.textItems;\n\n if (!textItems) {\n return null;\n }\n\n return textItems.map(function (textItem, itemIndex) {\n return /*#__PURE__*/React.createElement(TextLayerItem // eslint-disable-next-line react/no-array-index-key\n , _extends({\n key: itemIndex,\n itemIndex: itemIndex\n }, textItem));\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var viewport = this.unrotatedViewport,\n rotate = this.rotate;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"react-pdf__Page__textContent\",\n style: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n width: \"\".concat(viewport.width, \"px\"),\n height: \"\".concat(viewport.height, \"px\"),\n color: 'transparent',\n transform: \"translate(-50%, -50%) rotate(\".concat(rotate, \"deg)\"),\n WebkitTransform: \"translate(-50%, -50%) rotate(\".concat(rotate, \"deg)\"),\n pointerEvents: 'none'\n }\n }, this.renderTextItems());\n }\n }]);\n\n return TextLayerInternal;\n}(PureComponent);\nTextLayerInternal.propTypes = {\n onGetTextError: PropTypes.func,\n onGetTextSuccess: PropTypes.func,\n page: isPage.isRequired,\n rotate: isRotate,\n scale: PropTypes.number\n};\nexport default function TextLayer(props) {\n return /*#__PURE__*/React.createElement(PageContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(TextLayerInternal, _extends({}, context, props));\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport React, { createRef, PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport makeCancellable from 'make-cancellable-promise';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport * as pdfjs from 'pdfjs-dist/legacy/build/pdf';\nimport DocumentContext from '../DocumentContext';\nimport PageContext from '../PageContext';\nimport { cancelRunningTask } from '../shared/utils';\nimport { isLinkService, isPage, isRotate } from '../shared/propTypes';\nexport var AnnotationLayerInternal = /*#__PURE__*/function (_PureComponent) {\n _inherits(AnnotationLayerInternal, _PureComponent);\n\n var _super = _createSuper(AnnotationLayerInternal);\n\n function AnnotationLayerInternal() {\n var _this;\n\n _classCallCheck(this, AnnotationLayerInternal);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n annotations: null\n });\n\n _defineProperty(_assertThisInitialized(_this), \"layerElement\", /*#__PURE__*/createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"loadAnnotations\", function () {\n var page = _this.props.page;\n var cancellable = makeCancellable(page.getAnnotations());\n _this.runningTask = cancellable;\n cancellable.promise.then(function (annotations) {\n _this.setState({\n annotations: annotations\n }, _this.onLoadSuccess);\n })[\"catch\"](function (error) {\n _this.onLoadError(error);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onLoadSuccess\", function () {\n var onGetAnnotationsSuccess = _this.props.onGetAnnotationsSuccess;\n var annotations = _this.state.annotations;\n if (onGetAnnotationsSuccess) onGetAnnotationsSuccess(annotations);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onLoadError\", function (error) {\n _this.setState({\n annotations: false\n });\n\n warning(error);\n var onGetAnnotationsError = _this.props.onGetAnnotationsError;\n if (onGetAnnotationsError) onGetAnnotationsError(error);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onRenderSuccess\", function () {\n var onRenderAnnotationLayerSuccess = _this.props.onRenderAnnotationLayerSuccess;\n if (onRenderAnnotationLayerSuccess) onRenderAnnotationLayerSuccess();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onRenderError\", function (error) {\n warning(error);\n var onRenderAnnotationLayerError = _this.props.onRenderAnnotationLayerError;\n if (onRenderAnnotationLayerError) onRenderAnnotationLayerError(error);\n });\n\n return _this;\n }\n\n _createClass(AnnotationLayerInternal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var page = this.props.page;\n invariant(page, 'Attempted to load page annotations, but no page was specified.');\n this.loadAnnotations();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props = this.props,\n page = _this$props.page,\n renderForms = _this$props.renderForms;\n\n if (prevProps.page && page !== prevProps.page || renderForms !== prevProps.renderForms) {\n this.loadAnnotations();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n cancelRunningTask(this.runningTask);\n }\n }, {\n key: \"viewport\",\n get: function get() {\n var _this$props2 = this.props,\n page = _this$props2.page,\n rotate = _this$props2.rotate,\n scale = _this$props2.scale;\n return page.getViewport({\n scale: scale,\n rotation: rotate\n });\n }\n }, {\n key: \"renderAnnotationLayer\",\n value: function renderAnnotationLayer() {\n var annotations = this.state.annotations;\n\n if (!annotations) {\n return;\n }\n\n var _this$props3 = this.props,\n imageResourcesPath = _this$props3.imageResourcesPath,\n linkService = _this$props3.linkService,\n page = _this$props3.page,\n renderForms = _this$props3.renderForms;\n var viewport = this.viewport.clone({\n dontFlip: true\n });\n var parameters = {\n annotations: annotations,\n div: this.layerElement.current,\n imageResourcesPath: imageResourcesPath,\n linkService: linkService,\n page: page,\n renderForms: renderForms,\n viewport: viewport\n };\n this.layerElement.current.innerHTML = '';\n\n try {\n pdfjs.AnnotationLayer.render(parameters);\n this.onRenderSuccess();\n } catch (error) {\n this.onRenderError(error);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"react-pdf__Page__annotations annotationLayer\",\n ref: this.layerElement\n }, this.renderAnnotationLayer());\n }\n }]);\n\n return AnnotationLayerInternal;\n}(PureComponent);\nAnnotationLayerInternal.propTypes = {\n imageResourcesPath: PropTypes.string,\n linkService: isLinkService.isRequired,\n onGetAnnotationsError: PropTypes.func,\n onGetAnnotationsSuccess: PropTypes.func,\n onRenderAnnotationLayerError: PropTypes.func,\n onRenderAnnotationLayerSuccess: PropTypes.func,\n page: isPage,\n renderForms: PropTypes.bool,\n rotate: isRotate,\n scale: PropTypes.number\n};\n\nvar AnnotationLayer = function AnnotationLayer(props) {\n return /*#__PURE__*/React.createElement(DocumentContext.Consumer, null, function (documentContext) {\n return /*#__PURE__*/React.createElement(PageContext.Consumer, null, function (pageContext) {\n return /*#__PURE__*/React.createElement(AnnotationLayerInternal, _extends({}, documentContext, pageContext, props));\n });\n });\n};\n\nexport default AnnotationLayer;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport React, { createRef, PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport makeCancellable from 'make-cancellable-promise';\nimport makeEventProps from 'make-event-props';\nimport mergeClassNames from 'merge-class-names';\nimport mergeRefs from 'merge-refs';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport DocumentContext from './DocumentContext';\nimport PageContext from './PageContext';\nimport Message from './Message';\nimport PageCanvas from './Page/PageCanvas';\nimport PageSVG from './Page/PageSVG';\nimport TextLayer from './Page/TextLayer';\nimport AnnotationLayer from './Page/AnnotationLayer';\nimport { cancelRunningTask, isProvided, makePageCallback } from './shared/utils';\nimport { eventProps, isClassName, isPageIndex, isPageNumber, isPdf, isRef, isRenderMode, isRotate } from './shared/propTypes';\nvar defaultScale = 1;\nexport var PageInternal = /*#__PURE__*/function (_PureComponent) {\n _inherits(PageInternal, _PureComponent);\n\n var _super = _createSuper(PageInternal);\n\n function PageInternal() {\n var _this;\n\n _classCallCheck(this, PageInternal);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n page: null\n });\n\n _defineProperty(_assertThisInitialized(_this), \"pageElement\", /*#__PURE__*/createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"onLoadSuccess\", function () {\n var _this$props = _this.props,\n onLoadSuccess = _this$props.onLoadSuccess,\n registerPage = _this$props.registerPage;\n var page = _this.state.page;\n if (onLoadSuccess) onLoadSuccess(makePageCallback(page, _this.scale));\n if (registerPage) registerPage(_this.pageIndex, _this.pageElement.current);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onLoadError\", function (error) {\n _this.setState({\n page: false\n });\n\n warning(error);\n var onLoadError = _this.props.onLoadError;\n if (onLoadError) onLoadError(error);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"loadPage\", function () {\n var pdf = _this.props.pdf;\n\n var pageNumber = _this.getPageNumber();\n\n if (!pageNumber) {\n return;\n }\n\n _this.setState(function (prevState) {\n if (!prevState.page) {\n return null;\n }\n\n return {\n page: null\n };\n });\n\n var cancellable = makeCancellable(pdf.getPage(pageNumber));\n _this.runningTask = cancellable;\n cancellable.promise.then(function (page) {\n _this.setState({\n page: page\n }, _this.onLoadSuccess);\n })[\"catch\"](function (error) {\n _this.onLoadError(error);\n });\n });\n\n return _this;\n }\n\n _createClass(PageInternal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var pdf = this.props.pdf;\n invariant(pdf, 'Attempted to load a page, but no document was specified.');\n this.loadPage();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var pdf = this.props.pdf;\n\n if (prevProps.pdf && pdf !== prevProps.pdf || this.getPageNumber() !== this.getPageNumber(prevProps)) {\n var unregisterPage = this.props.unregisterPage;\n if (unregisterPage) unregisterPage(this.getPageIndex(prevProps));\n this.loadPage();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var unregisterPage = this.props.unregisterPage;\n if (unregisterPage) unregisterPage(this.pageIndex);\n cancelRunningTask(this.runningTask);\n }\n }, {\n key: \"childContext\",\n get: function get() {\n var page = this.state.page;\n\n if (!page) {\n return {};\n }\n\n var _this$props2 = this.props,\n canvasBackground = _this$props2.canvasBackground,\n customTextRenderer = _this$props2.customTextRenderer,\n onGetAnnotationsError = _this$props2.onGetAnnotationsError,\n onGetAnnotationsSuccess = _this$props2.onGetAnnotationsSuccess,\n onGetTextError = _this$props2.onGetTextError,\n onGetTextSuccess = _this$props2.onGetTextSuccess,\n onRenderAnnotationLayerError = _this$props2.onRenderAnnotationLayerError,\n onRenderAnnotationLayerSuccess = _this$props2.onRenderAnnotationLayerSuccess,\n onRenderError = _this$props2.onRenderError,\n onRenderSuccess = _this$props2.onRenderSuccess,\n renderForms = _this$props2.renderForms,\n renderInteractiveForms = _this$props2.renderInteractiveForms;\n return {\n canvasBackground: canvasBackground,\n customTextRenderer: customTextRenderer,\n onGetAnnotationsError: onGetAnnotationsError,\n onGetAnnotationsSuccess: onGetAnnotationsSuccess,\n onGetTextError: onGetTextError,\n onGetTextSuccess: onGetTextSuccess,\n onRenderAnnotationLayerError: onRenderAnnotationLayerError,\n onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccess,\n onRenderError: onRenderError,\n onRenderSuccess: onRenderSuccess,\n page: page,\n renderForms: renderForms !== null && renderForms !== void 0 ? renderForms : renderInteractiveForms,\n // For backward compatibility\n rotate: this.rotate,\n scale: this.scale\n };\n }\n /**\n * Called when a page is loaded successfully\n */\n\n }, {\n key: \"getPageIndex\",\n value: function getPageIndex() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n\n if (isProvided(props.pageNumber)) {\n return props.pageNumber - 1;\n }\n\n if (isProvided(props.pageIndex)) {\n return props.pageIndex;\n }\n\n return null;\n }\n }, {\n key: \"getPageNumber\",\n value: function getPageNumber() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n\n if (isProvided(props.pageNumber)) {\n return props.pageNumber;\n }\n\n if (isProvided(props.pageIndex)) {\n return props.pageIndex + 1;\n }\n\n return null;\n }\n }, {\n key: \"pageIndex\",\n get: function get() {\n return this.getPageIndex();\n }\n }, {\n key: \"pageNumber\",\n get: function get() {\n return this.getPageNumber();\n }\n }, {\n key: \"rotate\",\n get: function get() {\n var rotate = this.props.rotate;\n\n if (isProvided(rotate)) {\n return rotate;\n }\n\n var page = this.state.page;\n\n if (!page) {\n return null;\n }\n\n return page.rotate;\n }\n }, {\n key: \"scale\",\n get: function get() {\n var page = this.state.page;\n\n if (!page) {\n return null;\n }\n\n var _this$props3 = this.props,\n scale = _this$props3.scale,\n width = _this$props3.width,\n height = _this$props3.height;\n var rotate = this.rotate; // Be default, we'll render page at 100% * scale width.\n\n var pageScale = 1; // Passing scale explicitly null would cause the page not to render\n\n var scaleWithDefault = scale === null ? defaultScale : scale; // If width/height is defined, calculate the scale of the page so it could be of desired width.\n\n if (width || height) {\n var viewport = page.getViewport({\n scale: 1,\n rotation: rotate\n });\n pageScale = width ? width / viewport.width : height / viewport.height;\n }\n\n return scaleWithDefault * pageScale;\n }\n }, {\n key: \"eventProps\",\n get: function get() {\n var _this2 = this;\n\n return makeEventProps(this.props, function () {\n var page = _this2.state.page;\n\n if (!page) {\n return page;\n }\n\n return makePageCallback(page, _this2.scale);\n });\n }\n }, {\n key: \"pageKey\",\n get: function get() {\n var page = this.state.page;\n return \"\".concat(page.pageIndex, \"@\").concat(this.scale, \"/\").concat(this.rotate);\n }\n }, {\n key: \"pageKeyNoScale\",\n get: function get() {\n var page = this.state.page;\n return \"\".concat(page.pageIndex, \"/\").concat(this.rotate);\n }\n }, {\n key: \"renderMainLayer\",\n value: function renderMainLayer() {\n var _this$props4 = this.props,\n canvasRef = _this$props4.canvasRef,\n renderMode = _this$props4.renderMode;\n\n switch (renderMode) {\n case 'none':\n return null;\n\n case 'svg':\n return /*#__PURE__*/React.createElement(PageSVG, {\n key: \"\".concat(this.pageKeyNoScale, \"_svg\")\n });\n\n case 'canvas':\n default:\n return /*#__PURE__*/React.createElement(PageCanvas, {\n key: \"\".concat(this.pageKey, \"_canvas\"),\n canvasRef: canvasRef\n });\n }\n }\n }, {\n key: \"renderTextLayer\",\n value: function renderTextLayer() {\n var renderTextLayer = this.props.renderTextLayer;\n\n if (!renderTextLayer) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(TextLayer, {\n key: \"\".concat(this.pageKey, \"_text\")\n });\n }\n }, {\n key: \"renderAnnotationLayer\",\n value: function renderAnnotationLayer() {\n var renderAnnotationLayer = this.props.renderAnnotationLayer;\n\n if (!renderAnnotationLayer) {\n return null;\n }\n /**\n * As of now, PDF.js 2.0.943 returns warnings on unimplemented annotations in SVG mode.\n * Therefore, as a fallback, we render \"traditional\" AnnotationLayer component.\n */\n\n\n return /*#__PURE__*/React.createElement(AnnotationLayer, {\n key: \"\".concat(this.pageKey, \"_annotations\")\n });\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var children = this.props.children;\n return /*#__PURE__*/React.createElement(PageContext.Provider, {\n value: this.childContext\n }, this.renderMainLayer(), this.renderTextLayer(), this.renderAnnotationLayer(), children);\n }\n }, {\n key: \"renderContent\",\n value: function renderContent() {\n var pageNumber = this.pageNumber;\n var pdf = this.props.pdf;\n var page = this.state.page;\n\n if (!pageNumber) {\n var noData = this.props.noData;\n return /*#__PURE__*/React.createElement(Message, {\n type: \"no-data\"\n }, typeof noData === 'function' ? noData() : noData);\n }\n\n if (pdf === null || page === null) {\n var loading = this.props.loading;\n return /*#__PURE__*/React.createElement(Message, {\n type: \"loading\"\n }, typeof loading === 'function' ? loading() : loading);\n }\n\n if (pdf === false || page === false) {\n var error = this.props.error;\n return /*#__PURE__*/React.createElement(Message, {\n type: \"error\"\n }, typeof error === 'function' ? error() : error);\n }\n\n return this.renderChildren();\n }\n }, {\n key: \"render\",\n value: function render() {\n var pageNumber = this.pageNumber;\n var _this$props5 = this.props,\n className = _this$props5.className,\n inputRef = _this$props5.inputRef;\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: mergeClassNames('react-pdf__Page', className),\n \"data-page-number\": pageNumber,\n ref: mergeRefs(inputRef, this.pageElement),\n style: {\n position: 'relative'\n }\n }, this.eventProps), this.renderContent());\n }\n }]);\n\n return PageInternal;\n}(PureComponent);\nPageInternal.defaultProps = {\n error: 'Failed to load the page.',\n loading: 'Loading page…',\n noData: 'No page specified.',\n renderAnnotationLayer: true,\n renderForms: false,\n renderMode: 'canvas',\n renderTextLayer: true,\n scale: defaultScale\n};\nvar isFunctionOrNode = PropTypes.oneOfType([PropTypes.func, PropTypes.node]);\nPageInternal.propTypes = _objectSpread(_objectSpread({}, eventProps), {}, {\n canvasBackground: PropTypes.string,\n children: PropTypes.node,\n className: isClassName,\n customTextRenderer: PropTypes.func,\n error: isFunctionOrNode,\n height: PropTypes.number,\n imageResourcesPath: PropTypes.string,\n inputRef: isRef,\n loading: isFunctionOrNode,\n noData: isFunctionOrNode,\n onGetTextError: PropTypes.func,\n onGetTextSuccess: PropTypes.func,\n onLoadError: PropTypes.func,\n onLoadSuccess: PropTypes.func,\n onRenderError: PropTypes.func,\n onRenderSuccess: PropTypes.func,\n pageIndex: isPageIndex,\n pageNumber: isPageNumber,\n pdf: isPdf,\n registerPage: PropTypes.func,\n renderAnnotationLayer: PropTypes.bool,\n renderForms: PropTypes.bool,\n renderInteractiveForms: PropTypes.bool,\n // For backward compatibility\n renderMode: isRenderMode,\n renderTextLayer: PropTypes.bool,\n rotate: isRotate,\n scale: PropTypes.number,\n unregisterPage: PropTypes.func,\n width: PropTypes.number\n});\n\nfunction Page(props, ref) {\n return /*#__PURE__*/React.createElement(DocumentContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(PageInternal, _extends({\n ref: ref\n }, context, props));\n });\n}\n\nexport default /*#__PURE__*/React.forwardRef(Page);","import * as pdfjs from 'pdfjs-dist/legacy/build/pdf'; // eslint-disable-next-line import/no-unresolved\n\nimport pdfjsWorker from 'file-loader!pdfjs-dist/legacy/build/pdf.worker';\nimport Document from './Document';\nimport Outline from './Outline';\nimport Page from './Page';\nimport { displayWorkerWarning } from './shared/utils';\ndisplayWorkerWarning();\npdfjs.GlobalWorkerOptions.workerSrc = pdfjsWorker;\nexport { pdfjs, Document, Outline, Page };","import defineProperty from \"./defineProperty.js\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n return target;\n}","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\n\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\n\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Logger);\n\n this.init(concreteLogger, options);\n }\n\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }, this.options));\n }\n }]);\n\n return Logger;\n}();\n\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n\n this.observers = {};\n }\n\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n\n if (!listener) {\n delete this.observers[event];\n return;\n }\n\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\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 if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\n\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n\n if (value !== undefined) {\n return value;\n }\n\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\n\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n\n function ResourceStore(data) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n\n _classCallCheck(this, ResourceStore);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ResourceStore).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.data = data || {};\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n return _this;\n }\n\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n\n return getPath(this.data, path);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread({}, pack, resources);\n }\n\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread({}, {}, this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nvar checkedLoadedFor = {};\n\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n\n function Translator(services) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Translator);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Translator).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS;\n\n if (nsSeparator && key.indexOf(nsSeparator) > -1) {\n var m = key.match(this.interpolator.nestingRegexp);\n\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n return namespace + nsSeparator + key;\n }\n\n return key;\n }\n\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n return this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, options) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n }\n\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread({}, options, {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread({}, options, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n\n var send = function send(l, k, fallbackValue) {\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, updateMissing ? fallbackValue : res, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, updateMissing ? fallbackValue : res, updateMissing, options);\n }\n\n _this2.emit('missingKey', l, namespace, k, res);\n };\n\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n if (usedKey && this.options.parseMissingKeyHandler) res = this.options.parseMissingKeyHandler(res);\n }\n\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, options, resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread({}, options, {\n interpolation: _objectSpread({}, this.options.interpolation, options.interpolation)\n }));\n var skipOnVariables = options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n var nestBef;\n\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread({}, this.options.interpolation.defaultVariables, data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n\n return null;\n }\n\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread({\n i18nResolved: resolved\n }, options) : options, this);\n }\n\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n\n var extracted = _this4.extractFromKey(k, options);\n\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var needsContextHandling = options.context !== undefined && typeof options.context === 'string' && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKey = key;\n var finalKeys = [finalKey];\n\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count);\n if (needsPluralHandling && needsContextHandling) finalKeys.push(finalKey + pluralSuffix);\n if (needsContextHandling) finalKeys.push(finalKey += \"\".concat(_this4.options.contextSeparator).concat(options.context));\n if (needsPluralHandling) finalKeys.push(finalKey += pluralSuffix);\n }\n\n var possibleKey;\n\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n\n return false;\n }\n }]);\n\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n\n this.options = options;\n this.whitelist = this.options.supportedLngs || false;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n\n return p.join('-');\n }\n\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isWhitelisted\",\n value: function isWhitelisted(code) {\n this.logger.deprecate('languageUtils.isWhitelisted', 'function \"isWhitelisted\" will be renamed to \"isSupportedCode\" in the next major - please make sure to rename it\\'s usage asap.');\n return this.isSupportedCode(code);\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n\n var cleanedLng = _this.formatLanguageCode(code);\n\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n\n var lngOnly = _this.getLanguagePartFromCode(code);\n\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n\n var addCode = function addCode(c) {\n if (!c) return;\n\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'kk', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\n\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\n\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, PluralResolver);\n\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.rules = createRules();\n }\n\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var rule = this.getRule(code);\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n return this.getSuffixes(code).map(function (suffix) {\n return key + suffix;\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n\n var rule = this.getRule(code);\n\n if (!rule) {\n return [];\n }\n\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var _this2 = this;\n\n var rule = this.getRule(code);\n\n if (rule) {\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }]);\n\n return PluralResolver;\n}();\n\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Interpolator);\n\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n\n this.init(options);\n }\n\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng) : path;\n }\n\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, options);\n };\n\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n\n while (match = todo.regex.exec(str)) {\n value = handleFormat(match[1].trim());\n\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(match[1], \" for interpolating \").concat(str));\n\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n\n str = str.replace(match[0], todo.safeValue(value));\n todo.regex.lastIndex = 0;\n replaces++;\n\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n\n var clonedOptions = _objectSpread({}, options);\n\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n optionsString = optionsString.replace(/'/g, '\"');\n\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread({}, inheritedOptions, clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n\n delete clonedOptions.defaultValue;\n return key;\n }\n\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n var doReduce = false;\n\n if (match[0].includes(this.formatSeparator) && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, options);\n }, value.trim());\n }\n\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n\n return str;\n }\n }]);\n\n return Interpolator;\n}();\n\nfunction remove(arr, what) {\n var found = arr.indexOf(what);\n\n while (found !== -1) {\n arr.splice(found, 1);\n found = arr.indexOf(what);\n }\n}\n\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n\n function Connector(backend, store, services) {\n var _this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, Connector);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Connector).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.state = {};\n _this.queue = [];\n\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n\n return _this;\n }\n\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n\n var toLoad = [];\n var pending = [];\n var toLoadLanguages = [];\n var toLoadNamespaces = [];\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending.indexOf(name) < 0) pending.push(name);\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending.indexOf(name) < 0) pending.push(name);\n if (toLoad.indexOf(name) < 0) toLoad.push(name);\n if (toLoadNamespaces.indexOf(ns) < 0) toLoadNamespaces.push(ns);\n }\n });\n if (!hasAllNamespaces) toLoadLanguages.push(lng);\n });\n\n if (toLoad.length || pending.length) {\n this.queue.push({\n pending: pending,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n\n return {\n toLoad: toLoad,\n pending: pending,\n toLoadLanguages: toLoadLanguages,\n toLoadNamespaces: toLoadNamespaces\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n remove(q.pending, name);\n if (err) q.errors.push(err);\n\n if (q.pending.length === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = [];\n\n if (q.loaded[l].length) {\n q.loaded[l].forEach(function (ns) {\n if (loaded[l].indexOf(ns) < 0) loaded[l].push(ns);\n });\n }\n });\n q.done = true;\n\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 350;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n return this.backend[fcName](lng, ns, function (err, data) {\n if (err && data && tried < 5) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n\n callback(err, data);\n });\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n\n if (key === undefined || key === null || key === '') return;\n\n if (this.backend && this.backend.create) {\n this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread({}, options, {\n isUpdate: isUpdate\n }));\n }\n\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n whitelist: false,\n nonExplicitWhitelist: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: false\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n if (options.whitelist) {\n if (options.whitelist && options.whitelist.indexOf('cimode') < 0) {\n options.whitelist = options.whitelist.concat(['cimode']);\n }\n\n options.supportedLngs = options.whitelist;\n }\n\n if (options.nonExplicitWhitelist) {\n options.nonExplicitSupportedLngs = options.nonExplicitWhitelist;\n }\n\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n\n return options;\n}\n\nfunction noop() {}\n\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n\n function I18n() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n _classCallCheck(this, I18n);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(I18n).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n\n return _this;\n }\n\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (options.whitelist && !options.supportedLngs) {\n this.logger.deprecate('whitelist', 'option \"whitelist\" will be renamed to \"supportedLngs\" in the next major - please make sure to rename this option asap.');\n }\n\n if (options.nonExplicitWhitelist && !options.nonExplicitSupportedLngs) {\n this.logger.deprecate('whitelist', 'options \"nonExplicitWhitelist\" will be renamed to \"nonExplicitSupportedLngs\" in the next major - please make sure to rename this option asap.');\n }\n\n this.options = _objectSpread({}, get(), this.options, transformOptions(options));\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\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 _this2.emit.apply(_this2, [event].concat(args));\n });\n\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n s.languageDetector.init(s, this.options.detection, this.options);\n }\n\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n\n return _this2;\n };\n });\n var deferred = defer();\n\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n\n _this2.emit('initialized', _this2.options);\n\n deferred.resolve(t);\n callback(err, t);\n };\n\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n\n var append = function append(lng) {\n if (!lng) return;\n\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n\n this.services.backendConnector.load(toLoad, this.options.ns, usedCallback);\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n\n return this;\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n\n var done = function done(err, l) {\n if (l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n\n _this4.translator.changeLanguage(l);\n\n _this4.isLanguageChangingTo = undefined;\n\n _this4.emit('languageChanged', l);\n\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n\n var setLng = function setLng(lngs) {\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n if (l) {\n if (!_this4.language) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n }\n\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n this.services.languageDetector.detect(setLng);\n } else {\n setLng(lng);\n }\n\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns) {\n var _this5 = this;\n\n var fixedT = function fixedT(key, opts) {\n var options;\n\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread({}, opts);\n }\n\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n return _this5.t(key, options);\n };\n\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n\n fixedT.ns = ns;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n\n var lng = this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n return loadState === -1 || loadState === 2;\n };\n\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n\n var deferred = defer();\n\n if (!this.options.ns) {\n callback && callback();\n return Promise.resolve();\n }\n\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.languages && this.languages.length > 0 ? this.languages[0] : this.language;\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam'];\n return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) >= 0 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"createInstance\",\n value: function createInstance() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n var mergedOptions = _objectSpread({}, this.options, options, {\n isClone: true\n });\n\n var clone = new I18n(mergedOptions);\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }]);\n\n return I18n;\n}(EventEmitter);\n\nvar i18next = new I18n();\n\nexport default i18next;\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","'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","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","module.exports = require('./_hide');\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar setFunctionName = require('set-function-name');\nvar $TypeError = require('es-errors/type');\n\nvar $Object = Object;\n\nmodule.exports = setFunctionName(function flags() {\n\tif (this == null || this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.unicodeSets) {\n\t\tresult += 'v';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n}, 'get flags', true);\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (\n\t\t\tdescriptor\n\t\t\t&& typeof descriptor.get === 'function'\n\t\t\t&& typeof RegExp.prototype.dotAll === 'boolean'\n\t\t\t&& typeof RegExp.prototype.hasIndices === 'boolean'\n\t\t) {\n\t\t\t/* eslint getter-return: 0 */\n\t\t\tvar calls = '';\n\t\t\tvar o = {};\n\t\t\tObject.defineProperty(o, 'hasIndices', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'd';\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(o, 'sticky', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'y';\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (calls === 'dy') {\n\t\t\t\treturn descriptor.get;\n\t\t\t}\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\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","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar React = require('react');\nvar PropTypes = require('prop-types');\nvar _require = require('focus-trap'),\n createFocusTrap = _require.createFocusTrap;\nvar _require2 = require('tabbable'),\n isFocusable = _require2.isFocusable;\nvar FocusTrap = /*#__PURE__*/function (_React$Component) {\n _inherits(FocusTrap, _React$Component);\n var _super = _createSuper(FocusTrap);\n function FocusTrap(props) {\n var _this;\n _classCallCheck(this, FocusTrap);\n _this = _super.call(this, props);\n /**\n * Gets the node for the given option, which is expected to be an option that\n * can be either a DOM node, a string that is a selector to get a node, `false`\n * (if a node is explicitly NOT given), or a function that returns any of these\n * values.\n * @param {string} optionName\n * @returns {undefined | false | HTMLElement | SVGElement} Returns\n * `undefined` if the option is not specified; `false` if the option\n * resolved to `false` (node explicitly not given); otherwise, the resolved\n * DOM node.\n * @throws {Error} If the option is set, not `false`, and is not, or does not\n * resolve to a node.\n */\n _defineProperty(_assertThisInitialized(_this), \"getNodeForOption\", function (optionName) {\n var _this$internalOptions;\n // use internal options first, falling back to original options\n var optionValue = (_this$internalOptions = this.internalOptions[optionName]) !== null && _this$internalOptions !== void 0 ? _this$internalOptions : this.originalOptions[optionName];\n if (typeof optionValue === 'function') {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n optionValue = optionValue.apply(void 0, params);\n }\n if (optionValue === true) {\n optionValue = undefined; // use default value\n }\n\n if (!optionValue) {\n if (optionValue === undefined || optionValue === false) {\n return optionValue;\n }\n // else, empty string (invalid), null (invalid), 0 (invalid)\n\n throw new Error(\"`\".concat(optionName, \"` was specified but was not a node, or did not return a node\"));\n }\n var node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point\n\n if (typeof optionValue === 'string') {\n var _this$getDocument;\n node = (_this$getDocument = this.getDocument()) === null || _this$getDocument === void 0 ? void 0 : _this$getDocument.querySelector(optionValue); // resolve to node, or null if fails\n if (!node) {\n throw new Error(\"`\".concat(optionName, \"` as selector refers to no known node\"));\n }\n }\n return node;\n });\n _this.handleDeactivate = _this.handleDeactivate.bind(_assertThisInitialized(_this));\n _this.handlePostDeactivate = _this.handlePostDeactivate.bind(_assertThisInitialized(_this));\n _this.handleClickOutsideDeactivates = _this.handleClickOutsideDeactivates.bind(_assertThisInitialized(_this));\n\n // focus-trap options used internally when creating the trap\n _this.internalOptions = {\n // We need to hijack the returnFocusOnDeactivate option,\n // because React can move focus into the element before we arrived at\n // this lifecycle hook (e.g. with autoFocus inputs). So the component\n // captures the previouslyFocusedElement in componentWillMount,\n // then (optionally) returns focus to it in componentWillUnmount.\n returnFocusOnDeactivate: false,\n // the rest of these are also related to deactivation of the trap, and we\n // need to use them and control them as well\n checkCanReturnFocus: null,\n onDeactivate: _this.handleDeactivate,\n onPostDeactivate: _this.handlePostDeactivate,\n // we need to special-case this setting as well so that we can know if we should\n // NOT return focus if the trap gets auto-deactivated as the result of an\n // outside click (otherwise, we'll always think we should return focus because\n // of how we manage that flag internally here)\n clickOutsideDeactivates: _this.handleClickOutsideDeactivates\n };\n\n // original options provided by the consumer\n _this.originalOptions = {\n // because of the above `internalOptions`, we maintain our own flag for\n // this option, and default it to `true` because that's focus-trap's default\n returnFocusOnDeactivate: true,\n // because of the above `internalOptions`, we keep these separate since\n // they're part of the deactivation process which we configure (internally) to\n // be shared between focus-trap and focus-trap-react\n onDeactivate: null,\n onPostDeactivate: null,\n checkCanReturnFocus: null,\n // the user's setting, defaulted to false since focus-trap defaults this to false\n clickOutsideDeactivates: false\n };\n var focusTrapOptions = props.focusTrapOptions;\n for (var optionName in focusTrapOptions) {\n if (!Object.prototype.hasOwnProperty.call(focusTrapOptions, optionName)) {\n continue;\n }\n if (optionName === 'returnFocusOnDeactivate' || optionName === 'onDeactivate' || optionName === 'onPostDeactivate' || optionName === 'checkCanReturnFocus' || optionName === 'clickOutsideDeactivates') {\n _this.originalOptions[optionName] = focusTrapOptions[optionName];\n continue; // exclude from internalOptions\n }\n\n _this.internalOptions[optionName] = focusTrapOptions[optionName];\n }\n\n // if set, `{ target: Node, allowDeactivation: boolean }` where `target` is the outside\n // node that was clicked, and `allowDeactivation` is the result of the consumer's\n // option (stored in `this.originalOptions.clickOutsideDeactivates`, which may be a\n // function) whether to allow or deny auto-deactivation on click on this outside node\n _this.outsideClick = null;\n\n // elements from which to create the focus trap on mount; if a child is used\n // instead of the `containerElements` prop, we'll get the child's related\n // element when the trap renders and then is declared 'mounted'\n _this.focusTrapElements = props.containerElements || [];\n\n // now we remember what the currently focused element is, not relying on focus-trap\n _this.updatePreviousElement();\n return _this;\n }\n\n /**\n * Gets the configured document.\n * @returns {Document|undefined} Configured document, falling back to the main\n * document, if it exists. During SSR, `undefined` is returned since the\n * document doesn't exist.\n */\n _createClass(FocusTrap, [{\n key: \"getDocument\",\n value: function getDocument() {\n // SSR: careful to check if `document` exists before accessing it as a variable\n return this.props.focusTrapOptions.document || (typeof document !== 'undefined' ? document : undefined);\n }\n }, {\n key: \"getReturnFocusNode\",\n value: function getReturnFocusNode() {\n var node = this.getNodeForOption('setReturnFocus', this.previouslyFocusedElement);\n return node ? node : node === false ? false : this.previouslyFocusedElement;\n }\n\n /** Update the previously focused element with the currently focused element. */\n }, {\n key: \"updatePreviousElement\",\n value: function updatePreviousElement() {\n var currentDocument = this.getDocument();\n if (currentDocument) {\n this.previouslyFocusedElement = currentDocument.activeElement;\n }\n }\n }, {\n key: \"deactivateTrap\",\n value: function deactivateTrap() {\n // NOTE: it's possible the focus trap has already been deactivated without our knowing it,\n // especially if the user set the `clickOutsideDeactivates: true` option on the trap,\n // and the mouse was clicked on some element outside the trap; at that point, focus-trap\n // will initiate its auto-deactivation process, which will call our own\n // handleDeactivate(), which will call into this method\n if (!this.focusTrap || !this.focusTrap.active) {\n return;\n }\n this.focusTrap.deactivate({\n // NOTE: we never let the trap return the focus since we do that ourselves\n returnFocus: false,\n // we'll call this in our own post deactivate handler so make sure the trap doesn't\n // do it prematurely\n checkCanReturnFocus: null,\n // let it call the user's original deactivate handler, if any, instead of\n // our own which calls back into this function\n onDeactivate: this.originalOptions.onDeactivate\n // NOTE: for post deactivate, don't specify anything so that it calls the\n // onPostDeactivate handler specified on `this.internalOptions`\n // which will always be our own `handlePostDeactivate()` handler, which\n // will finish things off by calling the user's provided onPostDeactivate\n // handler, if any, at the right time\n // onPostDeactivate: NOTHING\n });\n }\n }, {\n key: \"handleClickOutsideDeactivates\",\n value: function handleClickOutsideDeactivates(event) {\n // use consumer's option (or call their handler) as the permission or denial\n var allowDeactivation = typeof this.originalOptions.clickOutsideDeactivates === 'function' ? this.originalOptions.clickOutsideDeactivates.call(null, event) // call out of context\n : this.originalOptions.clickOutsideDeactivates; // boolean\n\n if (allowDeactivation) {\n // capture the outside target that was clicked so we can use it in the deactivation\n // process since the consumer allowed it to cause auto-deactivation\n this.outsideClick = {\n target: event.target,\n allowDeactivation: allowDeactivation\n };\n }\n return allowDeactivation;\n }\n }, {\n key: \"handleDeactivate\",\n value: function handleDeactivate() {\n if (this.originalOptions.onDeactivate) {\n this.originalOptions.onDeactivate.call(null); // call user's handler out of context\n }\n\n this.deactivateTrap();\n }\n }, {\n key: \"handlePostDeactivate\",\n value: function handlePostDeactivate() {\n var _this2 = this;\n var finishDeactivation = function finishDeactivation() {\n var returnFocusNode = _this2.getReturnFocusNode();\n var canReturnFocus = !!(\n // did the consumer allow it?\n\n _this2.originalOptions.returnFocusOnDeactivate && // can we actually focus the node?\n returnFocusNode !== null && returnFocusNode !== void 0 && returnFocusNode.focus && (\n // was there an outside click that allowed deactivation?\n !_this2.outsideClick ||\n // did the consumer allow deactivation when the outside node was clicked?\n _this2.outsideClick.allowDeactivation &&\n // is the outside node NOT focusable (implying that it did NOT receive focus\n // as a result of the click-through) -- in which case do NOT restore focus\n // to `returnFocusNode` because focus should remain on the outside node\n !isFocusable(_this2.outsideClick.target, _this2.internalOptions.tabbableOptions))\n\n // if no, the restore focus to `returnFocusNode` at this point\n );\n\n var _this2$internalOption = _this2.internalOptions.preventScroll,\n preventScroll = _this2$internalOption === void 0 ? false : _this2$internalOption;\n if (canReturnFocus) {\n // return focus to the element that had focus when the trap was activated\n returnFocusNode.focus({\n preventScroll: preventScroll\n });\n }\n if (_this2.originalOptions.onPostDeactivate) {\n _this2.originalOptions.onPostDeactivate.call(null); // don't call it in context of \"this\"\n }\n\n _this2.outsideClick = null; // reset: no longer needed\n };\n\n if (this.originalOptions.checkCanReturnFocus) {\n this.originalOptions.checkCanReturnFocus.call(null, this.getReturnFocusNode()) // call out of context\n .then(finishDeactivation, finishDeactivation);\n } else {\n finishDeactivation();\n }\n }\n }, {\n key: \"setupFocusTrap\",\n value: function setupFocusTrap() {\n if (this.focusTrap) {\n // trap already exists: it's possible we're in StrictMode and we're being remounted,\n // in which case, we will have deactivated the trap when we got unmounted (remember,\n // StrictMode, in development, purposely unmounts and remounts components after\n // mounting them the first time to make sure they have reusable state,\n // @see https://reactjs.org/docs/strict-mode.html#ensuring-reusable-state) so now\n // we need to restore the state of the trap according to our component state\n // NOTE: Strict mode __violates__ assumptions about the `componentWillUnmount()` API\n // which clearly states -- even for React 18 -- that, \"Once a component instance is\n // unmounted, __it will never be mounted again.__\" (emphasis ours). So when we get\n // unmounted, we assume we're gone forever and we deactivate the trap. But then\n // we get remounted and we're supposed to restore state. But if you had paused,\n // we've now deactivated (we don't know we're amount to get remounted again)\n // which means we need to reactivate and then pause. Otherwise, do nothing.\n if (this.props.active && !this.focusTrap.active) {\n this.focusTrap.activate();\n if (this.props.paused) {\n this.focusTrap.pause();\n }\n }\n } else {\n var nodesExist = this.focusTrapElements.some(Boolean);\n if (nodesExist) {\n // eslint-disable-next-line react/prop-types -- _createFocusTrap is an internal prop\n this.focusTrap = this.props._createFocusTrap(this.focusTrapElements, this.internalOptions);\n if (this.props.active) {\n this.focusTrap.activate();\n }\n if (this.props.paused) {\n this.focusTrap.pause();\n }\n }\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.active) {\n this.setupFocusTrap();\n }\n // else, wait for later activation in case the `focusTrapOptions` will be updated\n // again before the trap is activated (e.g. if waiting to know what the document\n // object will be, so the Trap must be rendered, but the consumer is waiting to\n // activate until they have obtained the document from a ref)\n // @see https://github.com/focus-trap/focus-trap-react/issues/539\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.focusTrap) {\n if (prevProps.containerElements !== this.props.containerElements) {\n this.focusTrap.updateContainerElements(this.props.containerElements);\n }\n var hasActivated = !prevProps.active && this.props.active;\n var hasDeactivated = prevProps.active && !this.props.active;\n var hasPaused = !prevProps.paused && this.props.paused;\n var hasUnpaused = prevProps.paused && !this.props.paused;\n if (hasActivated) {\n this.updatePreviousElement();\n this.focusTrap.activate();\n }\n if (hasDeactivated) {\n this.deactivateTrap();\n return; // un/pause does nothing on an inactive trap\n }\n\n if (hasPaused) {\n this.focusTrap.pause();\n }\n if (hasUnpaused) {\n this.focusTrap.unpause();\n }\n } else {\n // NOTE: if we're in `componentDidUpdate` and we don't have a trap yet,\n // it either means it shouldn't be active, or it should be but none of\n // of given `containerElements` were present in the DOM the last time\n // we tried to create the trap\n\n if (prevProps.containerElements !== this.props.containerElements) {\n this.focusTrapElements = this.props.containerElements;\n }\n\n // don't create the trap unless it should be active in case the consumer\n // is still updating `focusTrapOptions`\n // @see https://github.com/focus-trap/focus-trap-react/issues/539\n if (this.props.active) {\n this.updatePreviousElement();\n this.setupFocusTrap();\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.deactivateTrap();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n var child = this.props.children ? React.Children.only(this.props.children) : undefined;\n if (child) {\n if (child.type && child.type === React.Fragment) {\n throw new Error('A focus-trap cannot use a Fragment as its child container. Try replacing it with a <div> element.');\n }\n var callbackRef = function callbackRef(element) {\n var containerElements = _this3.props.containerElements;\n if (child) {\n if (typeof child.ref === 'function') {\n child.ref(element);\n } else if (child.ref) {\n child.ref.current = element;\n }\n }\n _this3.focusTrapElements = containerElements ? containerElements : [element];\n };\n var childWithRef = React.cloneElement(child, {\n ref: callbackRef\n });\n return childWithRef;\n }\n return null;\n }\n }]);\n return FocusTrap;\n}(React.Component); // support server-side rendering where `Element` will not be defined\nvar ElementType = typeof Element === 'undefined' ? Function : Element;\nFocusTrap.propTypes = {\n active: PropTypes.bool,\n paused: PropTypes.bool,\n focusTrapOptions: PropTypes.shape({\n document: PropTypes.object,\n onActivate: PropTypes.func,\n onPostActivate: PropTypes.func,\n checkCanFocusTrap: PropTypes.func,\n onPause: PropTypes.func,\n onPostPause: PropTypes.func,\n onUnpause: PropTypes.func,\n onPostUnpause: PropTypes.func,\n onDeactivate: PropTypes.func,\n onPostDeactivate: PropTypes.func,\n checkCanReturnFocus: PropTypes.func,\n initialFocus: PropTypes.oneOfType([PropTypes.instanceOf(ElementType), PropTypes.string, PropTypes.bool, PropTypes.func]),\n fallbackFocus: PropTypes.oneOfType([PropTypes.instanceOf(ElementType), PropTypes.string,\n // NOTE: does not support `false` as value (or return value from function)\n PropTypes.func]),\n escapeDeactivates: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n clickOutsideDeactivates: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n returnFocusOnDeactivate: PropTypes.bool,\n setReturnFocus: PropTypes.oneOfType([PropTypes.instanceOf(ElementType), PropTypes.string, PropTypes.bool, PropTypes.func]),\n allowOutsideClick: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n preventScroll: PropTypes.bool,\n tabbableOptions: PropTypes.shape({\n displayCheck: PropTypes.oneOf(['full', 'legacy-full', 'non-zero-area', 'none']),\n getShadowRoot: PropTypes.oneOfType([PropTypes.bool, PropTypes.func])\n }),\n trapStack: PropTypes.array,\n isKeyForward: PropTypes.func,\n isKeyBackward: PropTypes.func\n }),\n containerElements: PropTypes.arrayOf(PropTypes.instanceOf(ElementType)),\n // DOM element ONLY\n children: PropTypes.oneOfType([PropTypes.element,\n // React element\n PropTypes.instanceOf(ElementType) // DOM element\n ])\n\n // NOTE: _createFocusTrap is internal, for testing purposes only, so we don't\n // specify it here. It's expected to be set to the function returned from\n // require('focus-trap'), or one with a compatible interface.\n};\n\nFocusTrap.defaultProps = {\n active: true,\n paused: false,\n focusTrapOptions: {},\n _createFocusTrap: createFocusTrap\n};\nmodule.exports = FocusTrap;","import {\n tabbable,\n focusable,\n isFocusable,\n isTabbable,\n getTabIndex,\n} from 'tabbable';\n\nconst activeFocusTraps = {\n activateTrap(trapStack, trap) {\n if (trapStack.length > 0) {\n const activeTrap = trapStack[trapStack.length - 1];\n if (activeTrap !== trap) {\n activeTrap.pause();\n }\n }\n\n const trapIndex = trapStack.indexOf(trap);\n if (trapIndex === -1) {\n trapStack.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapStack.splice(trapIndex, 1);\n trapStack.push(trap);\n }\n },\n\n deactivateTrap(trapStack, trap) {\n const trapIndex = trapStack.indexOf(trap);\n if (trapIndex !== -1) {\n trapStack.splice(trapIndex, 1);\n }\n\n if (trapStack.length > 0) {\n trapStack[trapStack.length - 1].unpause();\n }\n },\n};\n\nconst isSelectableInput = function (node) {\n return (\n node.tagName &&\n node.tagName.toLowerCase() === 'input' &&\n typeof node.select === 'function'\n );\n};\n\nconst isEscapeEvent = function (e) {\n return e?.key === 'Escape' || e?.key === 'Esc' || e?.keyCode === 27;\n};\n\nconst isTabEvent = function (e) {\n return e?.key === 'Tab' || e?.keyCode === 9;\n};\n\n// checks for TAB by default\nconst isKeyForward = function (e) {\n return isTabEvent(e) && !e.shiftKey;\n};\n\n// checks for SHIFT+TAB by default\nconst isKeyBackward = function (e) {\n return isTabEvent(e) && e.shiftKey;\n};\n\nconst delay = function (fn) {\n return setTimeout(fn, 0);\n};\n\n// Array.find/findIndex() are not supported on IE; this replicates enough\n// of Array.findIndex() for our needs\nconst findIndex = function (arr, fn) {\n let idx = -1;\n\n arr.every(function (value, i) {\n if (fn(value)) {\n idx = i;\n return false; // break\n }\n\n return true; // next\n });\n\n return idx;\n};\n\n/**\n * Get an option's value when it could be a plain value, or a handler that provides\n * the value.\n * @param {*} value Option's value to check.\n * @param {...*} [params] Any parameters to pass to the handler, if `value` is a function.\n * @returns {*} The `value`, or the handler's returned value.\n */\nconst valueOrHandler = function (value, ...params) {\n return typeof value === 'function' ? value(...params) : value;\n};\n\nconst getActualTarget = function (event) {\n // NOTE: If the trap is _inside_ a shadow DOM, event.target will always be the\n // shadow host. However, event.target.composedPath() will be an array of\n // nodes \"clicked\" from inner-most (the actual element inside the shadow) to\n // outer-most (the host HTML document). If we have access to composedPath(),\n // then use its first element; otherwise, fall back to event.target (and\n // this only works for an _open_ shadow DOM; otherwise,\n // composedPath()[0] === event.target always).\n return event.target.shadowRoot && typeof event.composedPath === 'function'\n ? event.composedPath()[0]\n : event.target;\n};\n\n// NOTE: this must be _outside_ `createFocusTrap()` to make sure all traps in this\n// current instance use the same stack if `userOptions.trapStack` isn't specified\nconst internalTrapStack = [];\n\nconst createFocusTrap = function (elements, userOptions) {\n // SSR: a live trap shouldn't be created in this type of environment so this\n // should be safe code to execute if the `document` option isn't specified\n const doc = userOptions?.document || document;\n\n const trapStack = userOptions?.trapStack || internalTrapStack;\n\n const config = {\n returnFocusOnDeactivate: true,\n escapeDeactivates: true,\n delayInitialFocus: true,\n isKeyForward,\n isKeyBackward,\n ...userOptions,\n };\n\n const state = {\n // containers given to createFocusTrap()\n // @type {Array<HTMLElement>}\n containers: [],\n\n // list of objects identifying tabbable nodes in `containers` in the trap\n // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap\n // is active, but the trap should never get to a state where there isn't at least one group\n // with at least one tabbable node in it (that would lead to an error condition that would\n // result in an error being thrown)\n // @type {Array<{\n // container: HTMLElement,\n // tabbableNodes: Array<HTMLElement>, // empty if none\n // focusableNodes: Array<HTMLElement>, // empty if none\n // posTabIndexesFound: boolean,\n // firstTabbableNode: HTMLElement|undefined,\n // lastTabbableNode: HTMLElement|undefined,\n // firstDomTabbableNode: HTMLElement|undefined,\n // lastDomTabbableNode: HTMLElement|undefined,\n // nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined\n // }>}\n containerGroups: [], // same order/length as `containers` list\n\n // references to objects in `containerGroups`, but only those that actually have\n // tabbable nodes in them\n // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__\n // the same length\n tabbableGroups: [],\n\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false,\n\n // timer ID for when delayInitialFocus is true and initial focus in this trap\n // has been delayed during activation\n delayInitialFocusTimer: undefined,\n\n // the most recent KeyboardEvent for the configured nav key (typically [SHIFT+]TAB), if any\n recentNavEvent: undefined,\n };\n\n let trap; // eslint-disable-line prefer-const -- some private functions reference it, and its methods reference private functions, so we must declare here and define later\n\n /**\n * Gets a configuration option value.\n * @param {Object|undefined} configOverrideOptions If true, and option is defined in this set,\n * value will be taken from this object. Otherwise, value will be taken from base configuration.\n * @param {string} optionName Name of the option whose value is sought.\n * @param {string|undefined} [configOptionName] Name of option to use __instead of__ `optionName`\n * IIF `configOverrideOptions` is not defined. Otherwise, `optionName` is used.\n */\n const getOption = (configOverrideOptions, optionName, configOptionName) => {\n return configOverrideOptions &&\n configOverrideOptions[optionName] !== undefined\n ? configOverrideOptions[optionName]\n : config[configOptionName || optionName];\n };\n\n /**\n * Finds the index of the container that contains the element.\n * @param {HTMLElement} element\n * @param {Event} [event] If available, and `element` isn't directly found in any container,\n * the event's composed path is used to see if includes any known trap containers in the\n * case where the element is inside a Shadow DOM.\n * @returns {number} Index of the container in either `state.containers` or\n * `state.containerGroups` (the order/length of these lists are the same); -1\n * if the element isn't found.\n */\n const findContainerIndex = function (element, event) {\n const composedPath =\n typeof event?.composedPath === 'function'\n ? event.composedPath()\n : undefined;\n // NOTE: search `containerGroups` because it's possible a group contains no tabbable\n // nodes, but still contains focusable nodes (e.g. if they all have `tabindex=-1`)\n // and we still need to find the element in there\n return state.containerGroups.findIndex(\n ({ container, tabbableNodes }) =>\n container.contains(element) ||\n // fall back to explicit tabbable search which will take into consideration any\n // web components if the `tabbableOptions.getShadowRoot` option was used for\n // the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't\n // look inside web components even if open)\n composedPath?.includes(container) ||\n tabbableNodes.find((node) => node === element)\n );\n };\n\n /**\n * Gets the node for the given option, which is expected to be an option that\n * can be either a DOM node, a string that is a selector to get a node, `false`\n * (if a node is explicitly NOT given), or a function that returns any of these\n * values.\n * @param {string} optionName\n * @returns {undefined | false | HTMLElement | SVGElement} Returns\n * `undefined` if the option is not specified; `false` if the option\n * resolved to `false` (node explicitly not given); otherwise, the resolved\n * DOM node.\n * @throws {Error} If the option is set, not `false`, and is not, or does not\n * resolve to a node.\n */\n const getNodeForOption = function (optionName, ...params) {\n let optionValue = config[optionName];\n\n if (typeof optionValue === 'function') {\n optionValue = optionValue(...params);\n }\n\n if (optionValue === true) {\n optionValue = undefined; // use default value\n }\n\n if (!optionValue) {\n if (optionValue === undefined || optionValue === false) {\n return optionValue;\n }\n // else, empty string (invalid), null (invalid), 0 (invalid)\n\n throw new Error(\n `\\`${optionName}\\` was specified but was not a node, or did not return a node`\n );\n }\n\n let node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point\n\n if (typeof optionValue === 'string') {\n node = doc.querySelector(optionValue); // resolve to node, or null if fails\n if (!node) {\n throw new Error(\n `\\`${optionName}\\` as selector refers to no known node`\n );\n }\n }\n\n return node;\n };\n\n const getInitialFocusNode = function () {\n let node = getNodeForOption('initialFocus');\n\n // false explicitly indicates we want no initialFocus at all\n if (node === false) {\n return false;\n }\n\n if (node === undefined || !isFocusable(node, config.tabbableOptions)) {\n // option not specified nor focusable: use fallback options\n if (findContainerIndex(doc.activeElement) >= 0) {\n node = doc.activeElement;\n } else {\n const firstTabbableGroup = state.tabbableGroups[0];\n const firstTabbableNode =\n firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n\n // NOTE: `fallbackFocus` option function cannot return `false` (not supported)\n node = firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n }\n\n if (!node) {\n throw new Error(\n 'Your focus-trap needs to have at least one focusable element'\n );\n }\n\n return node;\n };\n\n const updateTabbableNodes = function () {\n state.containerGroups = state.containers.map((container) => {\n const tabbableNodes = tabbable(container, config.tabbableOptions);\n\n // NOTE: if we have tabbable nodes, we must have focusable nodes; focusable nodes\n // are a superset of tabbable nodes since nodes with negative `tabindex` attributes\n // are focusable but not tabbable\n const focusableNodes = focusable(container, config.tabbableOptions);\n\n const firstTabbableNode =\n tabbableNodes.length > 0 ? tabbableNodes[0] : undefined;\n const lastTabbableNode =\n tabbableNodes.length > 0\n ? tabbableNodes[tabbableNodes.length - 1]\n : undefined;\n\n const firstDomTabbableNode = focusableNodes.find((node) =>\n isTabbable(node)\n );\n const lastDomTabbableNode = focusableNodes\n .slice()\n .reverse()\n .find((node) => isTabbable(node));\n\n const posTabIndexesFound = !!tabbableNodes.find(\n (node) => getTabIndex(node) > 0\n );\n\n return {\n container,\n tabbableNodes,\n focusableNodes,\n\n /** True if at least one node with positive `tabindex` was found in this container. */\n posTabIndexesFound,\n\n /** First tabbable node in container, __tabindex__ order; `undefined` if none. */\n firstTabbableNode,\n /** Last tabbable node in container, __tabindex__ order; `undefined` if none. */\n lastTabbableNode,\n\n // NOTE: DOM order is NOT NECESSARILY \"document position\" order, but figuring that out\n // would require more than just https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // because that API doesn't work with Shadow DOM as well as it should (@see\n // https://github.com/whatwg/dom/issues/320) and since this first/last is only needed, so far,\n // to address an edge case related to positive tabindex support, this seems like a much easier,\n // \"close enough most of the time\" alternative for positive tabindexes which should generally\n // be avoided anyway...\n /** First tabbable node in container, __DOM__ order; `undefined` if none. */\n firstDomTabbableNode,\n /** Last tabbable node in container, __DOM__ order; `undefined` if none. */\n lastDomTabbableNode,\n\n /**\n * Finds the __tabbable__ node that follows the given node in the specified direction,\n * in this container, if any.\n * @param {HTMLElement} node\n * @param {boolean} [forward] True if going in forward tab order; false if going\n * in reverse.\n * @returns {HTMLElement|undefined} The next tabbable node, if any.\n */\n nextTabbableNode(node, forward = true) {\n const nodeIdx = tabbableNodes.indexOf(node);\n if (nodeIdx < 0) {\n // either not tabbable nor focusable, or was focused but not tabbable (negative tabindex):\n // since `node` should at least have been focusable, we assume that's the case and mimic\n // what browsers do, which is set focus to the next node in __document position order__,\n // regardless of positive tabindexes, if any -- and for reasons explained in the NOTE\n // above related to `firstDomTabbable` and `lastDomTabbable` properties, we fall back to\n // basic DOM order\n if (forward) {\n return focusableNodes\n .slice(focusableNodes.indexOf(node) + 1)\n .find((el) => isTabbable(el));\n }\n\n return focusableNodes\n .slice(0, focusableNodes.indexOf(node))\n .reverse()\n .find((el) => isTabbable(el));\n }\n\n return tabbableNodes[nodeIdx + (forward ? 1 : -1)];\n },\n };\n });\n\n state.tabbableGroups = state.containerGroups.filter(\n (group) => group.tabbableNodes.length > 0\n );\n\n // throw if no groups have tabbable nodes and we don't have a fallback focus node either\n if (\n state.tabbableGroups.length <= 0 &&\n !getNodeForOption('fallbackFocus') // returning false not supported for this option\n ) {\n throw new Error(\n 'Your focus-trap must have at least one container with at least one tabbable node in it at all times'\n );\n }\n\n // NOTE: Positive tabindexes are only properly supported in single-container traps because\n // doing it across multiple containers where tabindexes could be all over the place\n // would require Tabbable to support multiple containers, would require additional\n // specialized Shadow DOM support, and would require Tabbable's multi-container support\n // to look at those containers in document position order rather than user-provided\n // order (as they are treated in Focus-trap, for legacy reasons). See discussion on\n // https://github.com/focus-trap/focus-trap/issues/375 for more details.\n if (\n state.containerGroups.find((g) => g.posTabIndexesFound) &&\n state.containerGroups.length > 1\n ) {\n throw new Error(\n \"At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.\"\n );\n }\n };\n\n /**\n * Gets the current activeElement. If it's a web-component and has open shadow-root\n * it will recursively search inside shadow roots for the \"true\" activeElement.\n *\n * @param {Document | ShadowRoot} el\n *\n * @returns {HTMLElement} The element that currently has the focus\n **/\n const getActiveElement = function (el) {\n const activeElement = el.activeElement;\n\n if (!activeElement) {\n return;\n }\n\n if (\n activeElement.shadowRoot &&\n activeElement.shadowRoot.activeElement !== null\n ) {\n return getActiveElement(activeElement.shadowRoot);\n }\n\n return activeElement;\n };\n\n const tryFocus = function (node) {\n if (node === false) {\n return;\n }\n\n if (node === getActiveElement(document)) {\n return;\n }\n\n if (!node || !node.focus) {\n tryFocus(getInitialFocusNode());\n return;\n }\n\n node.focus({ preventScroll: !!config.preventScroll });\n // NOTE: focus() API does not trigger focusIn event so set MRU node manually\n state.mostRecentlyFocusedNode = node;\n\n if (isSelectableInput(node)) {\n node.select();\n }\n };\n\n const getReturnFocusNode = function (previousActiveElement) {\n const node = getNodeForOption('setReturnFocus', previousActiveElement);\n return node ? node : node === false ? false : previousActiveElement;\n };\n\n /**\n * Finds the next node (in either direction) where focus should move according to a\n * keyboard focus-in event.\n * @param {Object} params\n * @param {Node} [params.target] Known target __from which__ to navigate, if any.\n * @param {KeyboardEvent|FocusEvent} [params.event] Event to use if `target` isn't known (event\n * will be used to determine the `target`). Ignored if `target` is specified.\n * @param {boolean} [params.isBackward] True if focus should move backward.\n * @returns {Node|undefined} The next node, or `undefined` if a next node couldn't be\n * determined given the current state of the trap.\n */\n const findNextNavNode = function ({ target, event, isBackward = false }) {\n target = target || getActualTarget(event);\n updateTabbableNodes();\n\n let destinationNode = null;\n\n if (state.tabbableGroups.length > 0) {\n // make sure the target is actually contained in a group\n // NOTE: the target may also be the container itself if it's focusable\n // with tabIndex='-1' and was given initial focus\n const containerIndex = findContainerIndex(target, event);\n const containerGroup =\n containerIndex >= 0 ? state.containerGroups[containerIndex] : undefined;\n\n if (containerIndex < 0) {\n // target not found in any group: quite possible focus has escaped the trap,\n // so bring it back into...\n if (isBackward) {\n // ...the last node in the last group\n destinationNode =\n state.tabbableGroups[state.tabbableGroups.length - 1]\n .lastTabbableNode;\n } else {\n // ...the first node in the first group\n destinationNode = state.tabbableGroups[0].firstTabbableNode;\n }\n } else if (isBackward) {\n // REVERSE\n\n // is the target the first tabbable node in a group?\n let startOfGroupIndex = findIndex(\n state.tabbableGroups,\n ({ firstTabbableNode }) => target === firstTabbableNode\n );\n\n if (\n startOfGroupIndex < 0 &&\n (containerGroup.container === target ||\n (isFocusable(target, config.tabbableOptions) &&\n !isTabbable(target, config.tabbableOptions) &&\n !containerGroup.nextTabbableNode(target, false)))\n ) {\n // an exception case where the target is either the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle shift+tab as if focus were on the container's\n // first tabbable node, and go to the last tabbable node of the LAST group\n startOfGroupIndex = containerIndex;\n }\n\n if (startOfGroupIndex >= 0) {\n // YES: then shift+tab should go to the last tabbable node in the\n // previous group (and wrap around to the last tabbable node of\n // the LAST group if it's the first tabbable node of the FIRST group)\n const destinationGroupIndex =\n startOfGroupIndex === 0\n ? state.tabbableGroups.length - 1\n : startOfGroupIndex - 1;\n\n const destinationGroup = state.tabbableGroups[destinationGroupIndex];\n\n destinationNode =\n getTabIndex(target) >= 0\n ? destinationGroup.lastTabbableNode\n : destinationGroup.lastDomTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target, false);\n }\n } else {\n // FORWARD\n\n // is the target the last tabbable node in a group?\n let lastOfGroupIndex = findIndex(\n state.tabbableGroups,\n ({ lastTabbableNode }) => target === lastTabbableNode\n );\n\n if (\n lastOfGroupIndex < 0 &&\n (containerGroup.container === target ||\n (isFocusable(target, config.tabbableOptions) &&\n !isTabbable(target, config.tabbableOptions) &&\n !containerGroup.nextTabbableNode(target)))\n ) {\n // an exception case where the target is the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle tab as if focus were on the container's\n // last tabbable node, and go to the first tabbable node of the FIRST group\n lastOfGroupIndex = containerIndex;\n }\n\n if (lastOfGroupIndex >= 0) {\n // YES: then tab should go to the first tabbable node in the next\n // group (and wrap around to the first tabbable node of the FIRST\n // group if it's the last tabbable node of the LAST group)\n const destinationGroupIndex =\n lastOfGroupIndex === state.tabbableGroups.length - 1\n ? 0\n : lastOfGroupIndex + 1;\n\n const destinationGroup = state.tabbableGroups[destinationGroupIndex];\n\n destinationNode =\n getTabIndex(target) >= 0\n ? destinationGroup.firstTabbableNode\n : destinationGroup.firstDomTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target);\n }\n }\n } else {\n // no groups available\n // NOTE: the fallbackFocus option does not support returning false to opt-out\n destinationNode = getNodeForOption('fallbackFocus');\n }\n\n return destinationNode;\n };\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n const checkPointerDown = function (e) {\n const target = getActualTarget(e);\n\n if (findContainerIndex(target, e) >= 0) {\n // allow the click since it ocurred inside the trap\n return;\n }\n\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n // immediately deactivate the trap\n trap.deactivate({\n // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,\n // which will result in the outside click setting focus to the node\n // that was clicked (and if not focusable, to \"nothing\"); by setting\n // `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n // on activation (or the configured `setReturnFocus` node), whether the\n // outside click was on a focusable node or not\n returnFocus: config.returnFocusOnDeactivate,\n });\n return;\n }\n\n // This is needed for mobile devices.\n // (If we'll only let `click` events through,\n // then on mobile they will be blocked anyways if `touchstart` is blocked.)\n if (valueOrHandler(config.allowOutsideClick, e)) {\n // allow the click outside the trap to take place\n return;\n }\n\n // otherwise, prevent the click\n e.preventDefault();\n };\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n // NOTE: the focusIn event is NOT cancelable, so if focus escapes, it may cause unexpected\n // scrolling if the node that got focused was out of view; there's nothing we can do to\n // prevent that from happening by the time we discover that focus escaped\n const checkFocusIn = function (event) {\n const target = getActualTarget(event);\n const targetContained = findContainerIndex(target, event) >= 0;\n\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (targetContained || target instanceof Document) {\n if (targetContained) {\n state.mostRecentlyFocusedNode = target;\n }\n } else {\n // escaped! pull it back in to where it just left\n event.stopImmediatePropagation();\n\n // focus will escape if the MRU node had a positive tab index and user tried to nav forward;\n // it will also escape if the MRU node had a 0 tab index and user tried to nav backward\n // toward a node with a positive tab index\n let nextNode; // next node to focus, if we find one\n let navAcrossContainers = true;\n if (state.mostRecentlyFocusedNode) {\n if (getTabIndex(state.mostRecentlyFocusedNode) > 0) {\n // MRU container index must be >=0 otherwise we wouldn't have it as an MRU node...\n const mruContainerIdx = findContainerIndex(\n state.mostRecentlyFocusedNode\n );\n // there MAY not be any tabbable nodes in the container if there are at least 2 containers\n // and the MRU node is focusable but not tabbable (focus-trap requires at least 1 container\n // with at least one tabbable node in order to function, so this could be the other container\n // with nothing tabbable in it)\n const { tabbableNodes } = state.containerGroups[mruContainerIdx];\n if (tabbableNodes.length > 0) {\n // MRU tab index MAY not be found if the MRU node is focusable but not tabbable\n const mruTabIdx = tabbableNodes.findIndex(\n (node) => node === state.mostRecentlyFocusedNode\n );\n if (mruTabIdx >= 0) {\n if (config.isKeyForward(state.recentNavEvent)) {\n if (mruTabIdx + 1 < tabbableNodes.length) {\n nextNode = tabbableNodes[mruTabIdx + 1];\n navAcrossContainers = false;\n }\n // else, don't wrap within the container as focus should move to next/previous\n // container\n } else {\n if (mruTabIdx - 1 >= 0) {\n nextNode = tabbableNodes[mruTabIdx - 1];\n navAcrossContainers = false;\n }\n // else, don't wrap within the container as focus should move to next/previous\n // container\n }\n // else, don't find in container order without considering direction too\n }\n }\n // else, no tabbable nodes in that container (which means we must have at least one other\n // container with at least one tabbable node in it, otherwise focus-trap would've thrown\n // an error the last time updateTabbableNodes() was run): find next node among all known\n // containers\n } else {\n // check to see if there's at least one tabbable node with a positive tab index inside\n // the trap because focus seems to escape when navigating backward from a tabbable node\n // with tabindex=0 when this is the case (instead of wrapping to the tabbable node with\n // the greatest positive tab index like it should)\n if (\n !state.containerGroups.some((g) =>\n g.tabbableNodes.some((n) => getTabIndex(n) > 0)\n )\n ) {\n // no containers with tabbable nodes with positive tab indexes which means the focus\n // escaped for some other reason and we should just execute the fallback to the\n // MRU node or initial focus node, if any\n navAcrossContainers = false;\n }\n }\n } else {\n // no MRU node means we're likely in some initial condition when the trap has just\n // been activated and initial focus hasn't been given yet, in which case we should\n // fall through to trying to focus the initial focus node, which is what should\n // happen below at this point in the logic\n navAcrossContainers = false;\n }\n\n if (navAcrossContainers) {\n nextNode = findNextNavNode({\n // move FROM the MRU node, not event-related node (which will be the node that is\n // outside the trap causing the focus escape we're trying to fix)\n target: state.mostRecentlyFocusedNode,\n isBackward: config.isKeyBackward(state.recentNavEvent),\n });\n }\n\n if (nextNode) {\n tryFocus(nextNode);\n } else {\n tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n }\n\n state.recentNavEvent = undefined; // clear\n };\n\n // Hijack key nav events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n const checkKeyNav = function (event, isBackward = false) {\n state.recentNavEvent = event;\n\n const destinationNode = findNextNavNode({ event, isBackward });\n if (destinationNode) {\n if (isTabEvent(event)) {\n // since tab natively moves focus, we wouldn't have a destination node unless we\n // were on the edge of a container and had to move to the next/previous edge, in\n // which case we want to prevent default to keep the browser from moving focus\n // to where it normally would\n event.preventDefault();\n }\n tryFocus(destinationNode);\n }\n // else, let the browser take care of [shift+]tab and move the focus\n };\n\n const checkKey = function (event) {\n if (\n isEscapeEvent(event) &&\n valueOrHandler(config.escapeDeactivates, event) !== false\n ) {\n event.preventDefault();\n trap.deactivate();\n return;\n }\n\n if (config.isKeyForward(event) || config.isKeyBackward(event)) {\n checkKeyNav(event, config.isKeyBackward(event));\n }\n };\n\n const checkClick = function (e) {\n const target = getActualTarget(e);\n\n if (findContainerIndex(target, e) >= 0) {\n return;\n }\n\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n return;\n }\n\n if (valueOrHandler(config.allowOutsideClick, e)) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n };\n\n //\n // EVENT LISTENERS\n //\n\n const addListeners = function () {\n if (!state.active) {\n return;\n }\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trapStack, trap);\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n state.delayInitialFocusTimer = config.delayInitialFocus\n ? delay(function () {\n tryFocus(getInitialFocusNode());\n })\n : tryFocus(getInitialFocusNode());\n\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, {\n capture: true,\n passive: false,\n });\n doc.addEventListener('touchstart', checkPointerDown, {\n capture: true,\n passive: false,\n });\n doc.addEventListener('click', checkClick, {\n capture: true,\n passive: false,\n });\n doc.addEventListener('keydown', checkKey, {\n capture: true,\n passive: false,\n });\n\n return trap;\n };\n\n const removeListeners = function () {\n if (!state.active) {\n return;\n }\n\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkKey, true);\n\n return trap;\n };\n\n //\n // MUTATION OBSERVER\n //\n\n const checkDomRemoval = function (mutations) {\n const isFocusedNodeRemoved = mutations.some(function (mutation) {\n const removedNodes = Array.from(mutation.removedNodes);\n return removedNodes.some(function (node) {\n return node === state.mostRecentlyFocusedNode;\n });\n });\n\n // If the currently focused is removed then browsers will move focus to the\n // <body> element. If this happens, try to move focus back into the trap.\n if (isFocusedNodeRemoved) {\n tryFocus(getInitialFocusNode());\n }\n };\n\n // Use MutationObserver - if supported - to detect if focused node is removed\n // from the DOM.\n const mutationObserver =\n typeof window !== 'undefined' && 'MutationObserver' in window\n ? new MutationObserver(checkDomRemoval)\n : undefined;\n\n const updateObservedNodes = function () {\n if (!mutationObserver) {\n return;\n }\n\n mutationObserver.disconnect();\n if (state.active && !state.paused) {\n state.containers.map(function (container) {\n mutationObserver.observe(container, {\n subtree: true,\n childList: true,\n });\n });\n }\n };\n\n //\n // TRAP DEFINITION\n //\n\n trap = {\n get active() {\n return state.active;\n },\n\n get paused() {\n return state.paused;\n },\n\n activate(activateOptions) {\n if (state.active) {\n return this;\n }\n\n const onActivate = getOption(activateOptions, 'onActivate');\n const onPostActivate = getOption(activateOptions, 'onPostActivate');\n const checkCanFocusTrap = getOption(activateOptions, 'checkCanFocusTrap');\n\n if (!checkCanFocusTrap) {\n updateTabbableNodes();\n }\n\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n\n onActivate?.();\n\n const finishActivation = () => {\n if (checkCanFocusTrap) {\n updateTabbableNodes();\n }\n addListeners();\n updateObservedNodes();\n onPostActivate?.();\n };\n\n if (checkCanFocusTrap) {\n checkCanFocusTrap(state.containers.concat()).then(\n finishActivation,\n finishActivation\n );\n return this;\n }\n\n finishActivation();\n return this;\n },\n\n deactivate(deactivateOptions) {\n if (!state.active) {\n return this;\n }\n\n const options = {\n onDeactivate: config.onDeactivate,\n onPostDeactivate: config.onPostDeactivate,\n checkCanReturnFocus: config.checkCanReturnFocus,\n ...deactivateOptions,\n };\n\n clearTimeout(state.delayInitialFocusTimer); // noop if undefined\n state.delayInitialFocusTimer = undefined;\n\n removeListeners();\n state.active = false;\n state.paused = false;\n updateObservedNodes();\n\n activeFocusTraps.deactivateTrap(trapStack, trap);\n\n const onDeactivate = getOption(options, 'onDeactivate');\n const onPostDeactivate = getOption(options, 'onPostDeactivate');\n const checkCanReturnFocus = getOption(options, 'checkCanReturnFocus');\n const returnFocus = getOption(\n options,\n 'returnFocus',\n 'returnFocusOnDeactivate'\n );\n\n onDeactivate?.();\n\n const finishDeactivation = () => {\n delay(() => {\n if (returnFocus) {\n tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n }\n onPostDeactivate?.();\n });\n };\n\n if (returnFocus && checkCanReturnFocus) {\n checkCanReturnFocus(\n getReturnFocusNode(state.nodeFocusedBeforeActivation)\n ).then(finishDeactivation, finishDeactivation);\n return this;\n }\n\n finishDeactivation();\n return this;\n },\n\n pause(pauseOptions) {\n if (state.paused || !state.active) {\n return this;\n }\n\n const onPause = getOption(pauseOptions, 'onPause');\n const onPostPause = getOption(pauseOptions, 'onPostPause');\n\n state.paused = true;\n onPause?.();\n\n removeListeners();\n updateObservedNodes();\n\n onPostPause?.();\n return this;\n },\n\n unpause(unpauseOptions) {\n if (!state.paused || !state.active) {\n return this;\n }\n\n const onUnpause = getOption(unpauseOptions, 'onUnpause');\n const onPostUnpause = getOption(unpauseOptions, 'onPostUnpause');\n\n state.paused = false;\n onUnpause?.();\n\n updateTabbableNodes();\n addListeners();\n updateObservedNodes();\n\n onPostUnpause?.();\n return this;\n },\n\n updateContainerElements(containerElements) {\n const elementsAsArray = [].concat(containerElements).filter(Boolean);\n\n state.containers = elementsAsArray.map((element) =>\n typeof element === 'string' ? doc.querySelector(element) : element\n );\n\n if (state.active) {\n updateTabbableNodes();\n }\n\n updateObservedNodes();\n\n return this;\n },\n };\n\n // initialize container elements\n trap.updateContainerElements(elements);\n\n return trap;\n};\n\nexport { createFocusTrap };\n","import { useRef } from 'react';\n\nfunction useConstant(fn) {\n var ref = useRef();\n\n if (!ref.current) {\n ref.current = {\n v: fn()\n };\n }\n\n return ref.current.v;\n}\n\nexport default useConstant;\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define([\"react\"],t):\"object\"==typeof exports?exports.reactTextMask=t(require(\"react\")):e.reactTextMask=t(e.React)}(this,function(e){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p=\"\",t(0)}([function(e,t,r){\"use strict\";function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var r={};for(var n in e)t.indexOf(n)>=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}function i(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function a(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}function u(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.conformToMask=void 0;var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},l=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),f=r(3);Object.defineProperty(t,\"conformToMask\",{enumerable:!0,get:function(){return n(f).default}});var c=r(11),p=n(c),d=r(9),h=n(d),v=r(5),y=n(v),m=r(2),b=function(e){function t(){var e;i(this,t);for(var r=arguments.length,n=Array(r),o=0;o<r;o++)n[o]=arguments[o];var u=a(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(n)));return u.setRef=u.setRef.bind(u),u.onBlur=u.onBlur.bind(u),u.onChange=u.onChange.bind(u),u}return u(t,e),l(t,[{key:\"setRef\",value:function(e){this.inputElement=e}},{key:\"initTextMask\",value:function(){var e=this.props,t=this.props.value;this.textMaskInputElement=(0,y.default)(s({inputElement:this.inputElement},e)),this.textMaskInputElement.update(t)}},{key:\"componentDidMount\",value:function(){this.initTextMask()}},{key:\"componentDidUpdate\",value:function(e){var t=this.props,r=t.value,n=t.pipe,o=t.mask,i=t.guide,a=t.placeholderChar,u=t.showMask,s={guide:i,placeholderChar:a,showMask:u},l=\"function\"==typeof n&&\"function\"==typeof e.pipe?n.toString()!==e.pipe.toString():(0,m.isNil)(n)&&!(0,m.isNil)(e.pipe)||!(0,m.isNil)(n)&&(0,m.isNil)(e.pipe),f=o.toString()!==e.mask.toString(),c=Object.keys(s).some(function(t){return s[t]!==e[t]})||f||l,p=r!==this.inputElement.value;(p||c)&&this.initTextMask()}},{key:\"render\",value:function e(){var t=this.props,e=t.render,r=o(t,[\"render\"]);return delete r.mask,delete r.guide,delete r.pipe,delete r.placeholderChar,delete r.keepCharPositions,delete r.value,delete r.onBlur,delete r.onChange,delete r.showMask,e(this.setRef,s({onBlur:this.onBlur,onChange:this.onChange,defaultValue:this.props.value},r))}},{key:\"onChange\",value:function(e){this.textMaskInputElement.update(),\"function\"==typeof this.props.onChange&&this.props.onChange(e)}},{key:\"onBlur\",value:function(e){\"function\"==typeof this.props.onBlur&&this.props.onBlur(e)}}]),t}(p.default.PureComponent);t.default=b,b.propTypes={mask:h.default.oneOfType([h.default.array,h.default.func,h.default.bool,h.default.shape({mask:h.default.oneOfType([h.default.array,h.default.func]),pipe:h.default.func})]).isRequired,guide:h.default.bool,value:h.default.oneOfType([h.default.string,h.default.number]),pipe:h.default.func,placeholderChar:h.default.string,keepCharPositions:h.default.bool,showMask:h.default.bool},b.defaultProps={render:function(e,t){return p.default.createElement(\"input\",s({ref:e},t))}}},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.placeholderChar=\"_\",t.strFunction=\"function\"},function(e,t,r){\"use strict\";function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l.placeholderChar;if(!o(e))throw new Error(\"Text-mask:convertMaskToPlaceholder; The mask property must be an array.\");if(e.indexOf(t)!==-1)throw new Error(\"Placeholder character must not be used as part of the mask. Please specify a character that is not present in your mask as your placeholder character.\\n\\n\"+(\"The placeholder character that was received is: \"+JSON.stringify(t)+\"\\n\\n\")+(\"The mask that was received is: \"+JSON.stringify(e)));return e.map(function(e){return e instanceof RegExp?t:e}).join(\"\")}function o(e){return Array.isArray&&Array.isArray(e)||e instanceof Array}function i(e){return\"string\"==typeof e||e instanceof String}function a(e){return\"number\"==typeof e&&void 0===e.length&&!isNaN(e)}function u(e){return\"undefined\"==typeof e||null===e}function s(e){for(var t=[],r=void 0;r=e.indexOf(c),r!==-1;)t.push(r),e.splice(r,1);return{maskWithoutCaretTraps:e,indexes:t}}Object.defineProperty(t,\"__esModule\",{value:!0}),t.convertMaskToPlaceholder=n,t.isArray=o,t.isString=i,t.isNumber=a,t.isNil=u,t.processCaretTraps=s;var l=r(1),f=[],c=\"[]\"},function(e,t,r){\"use strict\";function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!(0,i.isArray)(t)){if((\"undefined\"==typeof t?\"undefined\":o(t))!==a.strFunction)throw new Error(\"Text-mask:conformToMask; The mask property must be an array.\");t=t(e,r),t=(0,i.processCaretTraps)(t).maskWithoutCaretTraps}var n=r.guide,l=void 0===n||n,f=r.previousConformedValue,c=void 0===f?s:f,p=r.placeholderChar,d=void 0===p?a.placeholderChar:p,h=r.placeholder,v=void 0===h?(0,i.convertMaskToPlaceholder)(t,d):h,y=r.currentCaretPosition,m=r.keepCharPositions,b=l===!1&&void 0!==c,g=e.length,k=c.length,C=v.length,O=t.length,T=g-k,P=T>0,x=y+(P?-T:0),w=x+Math.abs(T);if(m===!0&&!P){for(var S=s,_=x;_<w;_++)v[_]===d&&(S+=d);e=e.slice(0,x)+S+e.slice(x,g)}for(var M=e.split(s).map(function(e,t){return{char:e,isNew:t>=x&&t<w}}),j=g-1;j>=0;j--){var E=M[j].char;if(E!==d){var R=j>=x&&k===O;E===v[R?j-T:j]&&M.splice(j,1)}}var V=s,N=!1;e:for(var A=0;A<C;A++){var B=v[A];if(B===d){if(M.length>0)for(;M.length>0;){var I=M.shift(),F=I.char,q=I.isNew;if(F===d&&b!==!0){V+=d;continue e}if(t[A].test(F)){if(m===!0&&q!==!1&&c!==s&&l!==!1&&P){for(var D=M.length,L=null,W=0;W<D;W++){var J=M[W];if(J.char!==d&&J.isNew===!1)break;if(J.char===d){L=W;break}}null!==L?(V+=F,M.splice(L,1)):A--}else V+=F;continue e}N=!0}b===!1&&(V+=v.substr(A,C));break}V+=B}if(b&&P===!1){for(var U=null,H=0;H<V.length;H++)v[H]===d&&(U=H);V=null!==U?V.substr(0,U+1):s}return{conformedValue:V,meta:{someCharsRejected:N}}}Object.defineProperty(t,\"__esModule\",{value:!0});var o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};t.default=n;var i=r(2),a=r(1),u=[],s=\"\"},function(e,t){\"use strict\";function r(e){var t=e.previousConformedValue,r=void 0===t?o:t,i=e.previousPlaceholder,a=void 0===i?o:i,u=e.currentCaretPosition,s=void 0===u?0:u,l=e.conformedValue,f=e.rawValue,c=e.placeholderChar,p=e.placeholder,d=e.indexesOfPipedChars,h=void 0===d?n:d,v=e.caretTrapIndexes,y=void 0===v?n:v;if(0===s||!f.length)return 0;var m=f.length,b=r.length,g=p.length,k=l.length,C=m-b,O=C>0,T=0===b,P=C>1&&!O&&!T;if(P)return s;var x=O&&(r===l||l===p),w=0,S=void 0,_=void 0;if(x)w=s-C;else{var M=l.toLowerCase(),j=f.toLowerCase(),E=j.substr(0,s).split(o),R=E.filter(function(e){return M.indexOf(e)!==-1});_=R[R.length-1];var V=a.substr(0,R.length).split(o).filter(function(e){return e!==c}).length,N=p.substr(0,R.length).split(o).filter(function(e){return e!==c}).length,A=N!==V,B=void 0!==a[R.length-1]&&void 0!==p[R.length-2]&&a[R.length-1]!==c&&a[R.length-1]!==p[R.length-1]&&a[R.length-1]===p[R.length-2];!O&&(A||B)&&V>0&&p.indexOf(_)>-1&&void 0!==f[s]&&(S=!0,_=f[s]);for(var I=h.map(function(e){return M[e]}),F=I.filter(function(e){return e===_}).length,q=R.filter(function(e){return e===_}).length,D=p.substr(0,p.indexOf(c)).split(o).filter(function(e,t){return e===_&&f[t]!==e}).length,L=D+q+F+(S?1:0),W=0,J=0;J<k;J++){var U=M[J];if(w=J+1,U===_&&W++,W>=L)break}}if(O){for(var H=w,Y=w;Y<=g;Y++)if(p[Y]===c&&(H=Y),p[Y]===c||y.indexOf(Y)!==-1||Y===g)return H}else if(S){for(var z=w-1;z>=0;z--)if(l[z]===_||y.indexOf(z)!==-1||0===z)return z}else for(var G=w;G>=0;G--)if(p[G-1]===c||y.indexOf(G)!==-1||0===G)return G}Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=r;var n=[],o=\"\"},function(e,t,r){\"use strict\";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){var t={previousConformedValue:void 0,previousPlaceholder:void 0};return{state:t,update:function(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,o=n.inputElement,l=n.mask,c=n.guide,y=n.pipe,b=n.placeholderChar,g=void 0===b?h.placeholderChar:b,k=n.keepCharPositions,C=void 0!==k&&k,O=n.showMask,T=void 0!==O&&O;if(\"undefined\"==typeof r&&(r=o.value),r!==t.previousConformedValue){(\"undefined\"==typeof l?\"undefined\":s(l))===m&&void 0!==l.pipe&&void 0!==l.mask&&(y=l.pipe,l=l.mask);var P=void 0,x=void 0;if(l instanceof Array&&(P=(0,d.convertMaskToPlaceholder)(l,g)),l!==!1){var w=a(r),S=o.selectionEnd,_=t.previousConformedValue,M=t.previousPlaceholder,j=void 0;if((\"undefined\"==typeof l?\"undefined\":s(l))===h.strFunction){if(x=l(w,{currentCaretPosition:S,previousConformedValue:_,placeholderChar:g}),x===!1)return;var E=(0,d.processCaretTraps)(x),R=E.maskWithoutCaretTraps,V=E.indexes;x=R,j=V,P=(0,d.convertMaskToPlaceholder)(x,g)}else x=l;var N={previousConformedValue:_,guide:c,placeholderChar:g,pipe:y,placeholder:P,currentCaretPosition:S,keepCharPositions:C},A=(0,p.default)(w,x,N),B=A.conformedValue,I=(\"undefined\"==typeof y?\"undefined\":s(y))===h.strFunction,F={};I&&(F=y(B,u({rawValue:w},N)),F===!1?F={value:_,rejected:!0}:(0,d.isString)(F)&&(F={value:F}));var q=I?F.value:B,D=(0,f.default)({previousConformedValue:_,previousPlaceholder:M,conformedValue:q,placeholder:P,rawValue:w,currentCaretPosition:S,placeholderChar:g,indexesOfPipedChars:F.indexesOfPipedChars,caretTrapIndexes:j}),L=q===P&&0===D,W=T?P:v,J=L?W:q;t.previousConformedValue=J,t.previousPlaceholder=P,o.value!==J&&(o.value=J,i(o,D))}}}}}function i(e,t){document.activeElement===e&&(b?g(function(){return e.setSelectionRange(t,t,y)},0):e.setSelectionRange(t,t,y))}function a(e){if((0,d.isString)(e))return e;if((0,d.isNumber)(e))return String(e);if(void 0===e||null===e)return v;throw new Error(\"The 'value' provided to Text Mask needs to be a string or a number. The value received was:\\n\\n \"+JSON.stringify(e))}Object.defineProperty(t,\"__esModule\",{value:!0});var u=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},s=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};t.default=o;var l=r(4),f=n(l),c=r(3),p=n(c),d=r(2),h=r(1),v=\"\",y=\"none\",m=\"object\",b=\"undefined\"!=typeof navigator&&/Android/i.test(navigator.userAgent),g=\"undefined\"!=typeof requestAnimationFrame?requestAnimationFrame:setTimeout},function(e,t){\"use strict\";function r(e){return function(){return e}}var n=function(){};n.thatReturns=r,n.thatReturnsFalse=r(!1),n.thatReturnsTrue=r(!0),n.thatReturnsNull=r(null),n.thatReturnsThis=function(){return this},n.thatReturnsArgument=function(e){return e},e.exports=n},function(e,t,r){\"use strict\";function n(e,t,r,n,i,a,u,s){if(o(t),!e){var l;if(void 0===t)l=new Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var f=[r,n,i,a,u,s],c=0;l=new Error(t.replace(/%s/g,function(){return f[c++]})),l.name=\"Invariant Violation\"}throw l.framesToPop=1,l}}var o=function(e){};e.exports=n},function(e,t,r){\"use strict\";var n=r(6),o=r(7),i=r(10);e.exports=function(){function e(e,t,r,n,a,u){u!==i&&o(!1,\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\")}function t(){return e}e.isRequired=e;var r={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t};return r.checkPropTypes=n,r.PropTypes=r,r}},function(e,t,r){\"use strict\";\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},e.exports=r(8)()},function(e,t){\"use strict\";var r=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";e.exports=r},function(t,r){t.exports=e}])});","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.createAutoCorrectedDatePipe=t():e.createAutoCorrectedDatePipe=t()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p=\"\",t(0)}([function(e,t,r){e.exports=r(1)},function(e,t){\"use strict\";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"mm dd yyyy\",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minYear,i=void 0===r?1:r,d=t.maxYear,u=void 0===d?9999:d,s=e.split(/[^dmyHMS]+/).sort(function(e,t){return o.indexOf(e)-o.indexOf(t)});return function(t){var r=[],o={dd:31,mm:12,yy:99,yyyy:u,HH:23,MM:59,SS:59},d={dd:1,mm:1,yy:0,yyyy:i,HH:0,MM:0,SS:0},a=t.split(\"\");s.forEach(function(t){var n=e.indexOf(t),i=parseInt(o[t].toString().substr(0,1),10);parseInt(a[n],10)>i&&(a[n+1]=a[n],a[n]=0,r.push(n))});var y=0,f=s.some(function(r){var s=e.indexOf(r),a=r.length,f=t.substr(s,a).replace(/\\D/g,\"\"),p=parseInt(f,10);\"mm\"===r&&(y=p||0);var c=\"dd\"===r?n[y]:o[r];if(\"yyyy\"===r&&(1!==i||9999!==u)){var l=parseInt(o[r].toString().substring(0,f.length),10),m=parseInt(d[r].toString().substring(0,f.length),10);return p<m||p>l}return p>c||f.length===a&&p<d[r]});return!f&&{value:a.join(\"\"),indexesOfPipedChars:r}}}Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=r;var n=[31,31,29,31,30,31,30,31,31,30,31,30,31],o=[\"yyyy\",\"yy\",\"mm\",\"dd\",\"HH\",\"MM\",\"SS\"]}])});","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports,require(\"react\"),require(\"prop-types\"),require(\"classnames\"),require(\"date-fns/isDate\"),require(\"date-fns/isValid\"),require(\"date-fns/format\"),require(\"date-fns/addMinutes\"),require(\"date-fns/addHours\"),require(\"date-fns/addDays\"),require(\"date-fns/addWeeks\"),require(\"date-fns/addMonths\"),require(\"date-fns/addYears\"),require(\"date-fns/subMinutes\"),require(\"date-fns/subHours\"),require(\"date-fns/subDays\"),require(\"date-fns/subWeeks\"),require(\"date-fns/subMonths\"),require(\"date-fns/subYears\"),require(\"date-fns/getSeconds\"),require(\"date-fns/getMinutes\"),require(\"date-fns/getHours\"),require(\"date-fns/getDay\"),require(\"date-fns/getDate\"),require(\"date-fns/getISOWeek\"),require(\"date-fns/getMonth\"),require(\"date-fns/getQuarter\"),require(\"date-fns/getYear\"),require(\"date-fns/getTime\"),require(\"date-fns/setSeconds\"),require(\"date-fns/setMinutes\"),require(\"date-fns/setHours\"),require(\"date-fns/setMonth\"),require(\"date-fns/setQuarter\"),require(\"date-fns/setYear\"),require(\"date-fns/min\"),require(\"date-fns/max\"),require(\"date-fns/differenceInCalendarDays\"),require(\"date-fns/differenceInCalendarMonths\"),require(\"date-fns/differenceInCalendarWeeks\"),require(\"date-fns/differenceInCalendarYears\"),require(\"date-fns/startOfDay\"),require(\"date-fns/startOfWeek\"),require(\"date-fns/startOfMonth\"),require(\"date-fns/startOfQuarter\"),require(\"date-fns/startOfYear\"),require(\"date-fns/endOfDay\"),require(\"date-fns/endOfWeek\"),require(\"date-fns/endOfMonth\"),require(\"date-fns/isEqual\"),require(\"date-fns/isSameDay\"),require(\"date-fns/isSameMonth\"),require(\"date-fns/isSameYear\"),require(\"date-fns/isSameQuarter\"),require(\"date-fns/isAfter\"),require(\"date-fns/isBefore\"),require(\"date-fns/isWithinInterval\"),require(\"date-fns/toDate\"),require(\"date-fns/parse\"),require(\"date-fns/parseISO\"),require(\"react-onclickoutside\"),require(\"react-popper\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"react\",\"prop-types\",\"classnames\",\"date-fns/isDate\",\"date-fns/isValid\",\"date-fns/format\",\"date-fns/addMinutes\",\"date-fns/addHours\",\"date-fns/addDays\",\"date-fns/addWeeks\",\"date-fns/addMonths\",\"date-fns/addYears\",\"date-fns/subMinutes\",\"date-fns/subHours\",\"date-fns/subDays\",\"date-fns/subWeeks\",\"date-fns/subMonths\",\"date-fns/subYears\",\"date-fns/getSeconds\",\"date-fns/getMinutes\",\"date-fns/getHours\",\"date-fns/getDay\",\"date-fns/getDate\",\"date-fns/getISOWeek\",\"date-fns/getMonth\",\"date-fns/getQuarter\",\"date-fns/getYear\",\"date-fns/getTime\",\"date-fns/setSeconds\",\"date-fns/setMinutes\",\"date-fns/setHours\",\"date-fns/setMonth\",\"date-fns/setQuarter\",\"date-fns/setYear\",\"date-fns/min\",\"date-fns/max\",\"date-fns/differenceInCalendarDays\",\"date-fns/differenceInCalendarMonths\",\"date-fns/differenceInCalendarWeeks\",\"date-fns/differenceInCalendarYears\",\"date-fns/startOfDay\",\"date-fns/startOfWeek\",\"date-fns/startOfMonth\",\"date-fns/startOfQuarter\",\"date-fns/startOfYear\",\"date-fns/endOfDay\",\"date-fns/endOfWeek\",\"date-fns/endOfMonth\",\"date-fns/isEqual\",\"date-fns/isSameDay\",\"date-fns/isSameMonth\",\"date-fns/isSameYear\",\"date-fns/isSameQuarter\",\"date-fns/isAfter\",\"date-fns/isBefore\",\"date-fns/isWithinInterval\",\"date-fns/toDate\",\"date-fns/parse\",\"date-fns/parseISO\",\"react-onclickoutside\",\"react-popper\",\"react-dom\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).DatePicker={},e.React,e.PropTypes,e.classNames,e.isDate,e.isValidDate,e.format,e.addMinutes,e.addHours,e.addDays,e.addWeeks,e.addMonths,e.addYears,null,null,e.subDays,e.subWeeks,e.subMonths,e.subYears,e.getSeconds,e.getMinutes,e.getHours,e.getDay,e.getDate,e.getISOWeek,e.getMonth,e.getQuarter,e.getYear,e.getTime,e.setSeconds,e.setMinutes,e.setHours,e.setMonth,e.setQuarter,e.setYear,e.min,e.max,e.differenceInCalendarDays,e.differenceInCalendarMonths,null,e.differenceInCalendarYears,e.startOfDay,e.startOfWeek,e.startOfMonth,e.startOfQuarter,e.startOfYear,e.endOfDay,null,null,e.dfIsEqual,e.dfIsSameDay,e.dfIsSameMonth,e.dfIsSameYear,e.dfIsSameQuarter,e.isAfter,e.isBefore,e.isWithinInterval,e.toDate,e.parse,e.parseISO,e.onClickOutside,e.ReactPopper,e.ReactDOM)}(this,(function(e,t,r,a,n,o,s,i,p,l,d,c,u,f,h,m,y,v,D,w,k,g,b,C,S,_,M,P,E,N,O,Y,x,T,I,L,F,R,q,A,W,B,j,H,K,Q,V,U,$,z,G,J,X,Z,ee,te,re,ae,ne,oe,se,ie,pe){\"use strict\";function le(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var de=le(t),ce=le(a),ue=le(n),fe=le(o),he=le(s),me=le(i),ye=le(p),ve=le(l),De=le(d),we=le(c),ke=le(u),ge=le(m),be=le(y),Ce=le(v),Se=le(D),_e=le(w),Me=le(k),Pe=le(g),Ee=le(b),Ne=le(C),Oe=le(S),Ye=le(_),xe=le(M),Te=le(P),Ie=le(E),Le=le(N),Fe=le(O),Re=le(Y),qe=le(x),Ae=le(T),We=le(I),Be=le(L),je=le(F),He=le(R),Ke=le(q),Qe=le(W),Ve=le(B),Ue=le(j),$e=le(H),ze=le(K),Ge=le(Q),Je=le(V),Xe=le(z),Ze=le(G),et=le(J),tt=le(X),rt=le(Z),at=le(ee),nt=le(te),ot=le(re),st=le(ae),it=le(ne),pt=le(oe),lt=le(se),dt=le(pe);function ct(e){return(ct=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function ut(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function ft(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function ht(e,t,r){return t&&ft(e.prototype,t),r&&ft(e,r),e}function mt(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function yt(){return(yt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e}).apply(this,arguments)}function vt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function Dt(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?vt(Object(r),!0).forEach((function(t){mt(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):vt(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function wt(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&>(e,t)}function kt(e){return(kt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function gt(e,t){return(gt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function bt(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function Ct(e,t){return!t||\"object\"!=typeof t&&\"function\"!=typeof t?bt(e):t}function St(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,a=kt(e);if(t){var n=kt(this).constructor;r=Reflect.construct(a,arguments,n)}else r=a.apply(this,arguments);return Ct(this,r)}}function _t(e){return function(e){if(Array.isArray(e))return Mt(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if(\"string\"==typeof e)return Mt(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Mt(e,t)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function Mt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,a=new Array(t);r<t;r++)a[r]=e[r];return a}function Pt(e,t){switch(e){case\"P\":return t.date({width:\"short\"});case\"PP\":return t.date({width:\"medium\"});case\"PPP\":return t.date({width:\"long\"});case\"PPPP\":default:return t.date({width:\"full\"})}}function Et(e,t){switch(e){case\"p\":return t.time({width:\"short\"});case\"pp\":return t.time({width:\"medium\"});case\"ppp\":return t.time({width:\"long\"});case\"pppp\":default:return t.time({width:\"full\"})}}var Nt={p:Et,P:function(e,t){var r,a=e.match(/(P+)(p+)?/),n=a[1],o=a[2];if(!o)return Pt(e,t);switch(n){case\"P\":r=t.dateTime({width:\"short\"});break;case\"PP\":r=t.dateTime({width:\"medium\"});break;case\"PPP\":r=t.dateTime({width:\"long\"});break;case\"PPPP\":default:r=t.dateTime({width:\"full\"})}return r.replace(\"{{date}}\",Pt(n,t)).replace(\"{{time}}\",Et(o,t))}},Ot=12,Yt=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;function xt(e){var t=e?\"string\"==typeof e||e instanceof String?pt.default(e):st.default(e):new Date;return It(t)?t:null}function Tt(e,t,r,a){var n=null,o=Jt(r)||Jt(Gt()),s=!0;return Array.isArray(t)?(t.forEach((function(t){var r=it.default(e,t,new Date,{locale:o});a&&(s=It(r)&&e===he.default(r,t,{awareOfUnicodeTokens:!0})),It(r)&&s&&(n=r)})),n):(n=it.default(e,t,new Date,{locale:o}),a?s=It(n)&&e===he.default(n,t,{awareOfUnicodeTokens:!0}):It(n)||(t=t.match(Yt).map((function(e){var t=e[0];return\"p\"===t||\"P\"===t?o?(0,Nt[t])(e,o.formatLong):t:e})).join(\"\"),e.length>0&&(n=it.default(e,t.slice(0,e.length),new Date)),It(n)||(n=new Date(e))),It(n)&&s?n:null)}function It(e){return fe.default(e)&&at.default(e,new Date(\"1/1/1000\"))}function Lt(e,t,r){if(\"en\"===r)return he.default(e,t,{awareOfUnicodeTokens:!0});var a=Jt(r);return r&&!a&&console.warn('A locale object was not found for the provided string [\"'.concat(r,'\"].')),!a&&Gt()&&Jt(Gt())&&(a=Jt(Gt())),he.default(e,t,{locale:a||null,awareOfUnicodeTokens:!0})}function Ft(e,t){var r=t.hour,a=void 0===r?0:r,n=t.minute,o=void 0===n?0:n,s=t.second,i=void 0===s?0:s;return Re.default(Fe.default(Le.default(e,i),o),a)}function Rt(e,t){var r=t&&Jt(t)||Gt()&&Jt(Gt());return Oe.default(e,r?{locale:r}:null)}function qt(e,t){return Lt(e,\"ddd\",t)}function At(e){return Ve.default(e)}function Wt(e,t){var r=Jt(t||Gt());return Ue.default(e,{locale:r})}function Bt(e){return $e.default(e)}function jt(e){return Ge.default(e)}function Ht(e){return ze.default(e)}function Kt(e,t){return e&&t?tt.default(e,t):!e&&!t}function Qt(e,t){return e&&t?et.default(e,t):!e&&!t}function Vt(e,t){return e&&t?rt.default(e,t):!e&&!t}function Ut(e,t){return e&&t?Ze.default(e,t):!e&&!t}function $t(e,t){return e&&t?Xe.default(e,t):!e&&!t}function zt(e,t,r){var a,n=Ve.default(t),o=Je.default(r);try{a=ot.default(e,{start:n,end:o})}catch(e){a=!1}return a}function Gt(){return(\"undefined\"!=typeof window?window:global).__localeId__}function Jt(e){if(\"string\"==typeof e){var t=\"undefined\"!=typeof window?window:global;return t.__localeData__?t.__localeData__[e]:null}return e}function Xt(e,t){return Lt(qe.default(xt(),e),\"LLLL\",t)}function Zt(e,t){return Lt(qe.default(xt(),e),\"LLL\",t)}function er(e,t){return Lt(Ae.default(xt(),e),\"QQQ\",t)}function tr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return pr(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Ut(e,t)}))||o&&!o.some((function(t){return Ut(e,t)}))||s&&!s(xt(e))||!1}function rr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeDates;return r&&r.some((function(t){return Ut(e,t)}))||!1}function ar(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return pr(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Qt(e,t)}))||o&&!o.some((function(t){return Qt(e,t)}))||s&&!s(xt(e))||!1}function nr(e,t,r,a){var n=Te.default(e),o=Ye.default(e),s=Te.default(t),i=Ye.default(t),p=Te.default(a);return n===s&&n===p?o<=r&&r<=i:n<s?p===n&&o<=r||p===s&&i>=r||p<s&&p>n:void 0}function or(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return pr(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Vt(e,t)}))||o&&!o.some((function(t){return Vt(e,t)}))||s&&!s(xt(e))||!1}function sr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=new Date(e,0,1);return pr(n,{minDate:r,maxDate:a})||!1}function ir(e,t,r,a){var n=Te.default(e),o=xe.default(e),s=Te.default(t),i=xe.default(t),p=Te.default(a);return n===s&&n===p?o<=r&&r<=i:n<s?p===n&&o<=r||p===s&&i>=r||p<s&&p>n:void 0}function pr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate;return r&&He.default(e,r)<0||a&&He.default(e,a)>0}function lr(e,t){return t.some((function(t){return Pe.default(t)===Pe.default(e)&&Me.default(t)===Me.default(e)}))}function dr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeTimes,a=t.includeTimes,n=t.filterTime;return r&&lr(e,r)||a&&!lr(e,a)||n&&!n(e)||!1}function cr(e,t){var r=t.minTime,a=t.maxTime;if(!r||!a)throw new Error(\"Both minTime and maxTime props required\");var n,o=xt(),s=Re.default(Fe.default(o,Me.default(e)),Pe.default(e)),i=Re.default(Fe.default(o,Me.default(r)),Pe.default(r)),p=Re.default(Fe.default(o,Me.default(a)),Pe.default(a));try{n=!ot.default(s,{start:i,end:p})}catch(e){n=!1}return n}function ur(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.includeDates,n=Ce.default(e,1);return r&&Ke.default(r,n)>0||a&&a.every((function(e){return Ke.default(e,n)>0}))||!1}function fr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.includeDates,n=we.default(e,1);return r&&Ke.default(n,r)>0||a&&a.every((function(e){return Ke.default(n,e)>0}))||!1}function hr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.includeDates,n=Se.default(e,1);return r&&Qe.default(r,n)>0||a&&a.every((function(e){return Qe.default(e,n)>0}))||!1}function mr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.includeDates,n=ke.default(e,1);return r&&Qe.default(n,r)>0||a&&a.every((function(e){return Qe.default(n,e)>0}))||!1}function yr(e){var t=e.minDate,r=e.includeDates;if(r&&t){var a=r.filter((function(e){return He.default(e,t)>=0}));return Be.default(a)}return r?Be.default(r):t}function vr(e){var t=e.maxDate,r=e.includeDates;if(r&&t){var a=r.filter((function(e){return He.default(e,t)<=0}));return je.default(a)}return r?je.default(r):t}function Dr(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"react-datepicker__day--highlighted\",r=new Map,a=0,n=e.length;a<n;a++){var o=e[a];if(ue.default(o)){var s=Lt(o,\"MM.dd.yyyy\"),i=r.get(s)||[];i.includes(t)||(i.push(t),r.set(s,i))}else if(\"object\"===ct(o)){var p=Object.keys(o),l=p[0],d=o[p[0]];if(\"string\"==typeof l&&d.constructor===Array)for(var c=0,u=d.length;c<u;c++){var f=Lt(d[c],\"MM.dd.yyyy\"),h=r.get(f)||[];h.includes(l)||(h.push(l),r.set(f,h))}}}return r}function wr(e,t,r,a,n){for(var o=n.length,s=[],i=0;i<o;i++){var p=me.default(ye.default(e,Pe.default(n[i])),Me.default(n[i])),l=me.default(e,(r+1)*a);at.default(p,t)&&nt.default(p,l)&&s.push(n[i])}return s}function kr(e){return e<10?\"0\".concat(e):\"\".concat(e)}function gr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ot,r=Math.ceil(Te.default(e)/t)*t,a=r-(t-1);return{startPeriod:a,endPeriod:r}}function br(e,t,r,a){for(var n=[],o=0;o<2*t+1;o++){var s=e+t-o,i=!0;r&&(i=Te.default(r)<=s),a&&i&&(i=Te.default(a)>=s),i&&n.push(s)}return n}var Cr=function(e){wt(r,e);var t=St(r);function r(e){var a;ut(this,r),mt(bt(a=t.call(this,e)),\"renderOptions\",(function(){var e=a.props.year,t=a.state.yearsList.map((function(t){return de.default.createElement(\"div\",{className:e===t?\"react-datepicker__year-option react-datepicker__year-option--selected_year\":\"react-datepicker__year-option\",key:t,onClick:a.onChange.bind(bt(a),t)},e===t?de.default.createElement(\"span\",{className:\"react-datepicker__year-option--selected\"},\"✓\"):\"\",t)})),r=a.props.minDate?Te.default(a.props.minDate):null,n=a.props.maxDate?Te.default(a.props.maxDate):null;return n&&a.state.yearsList.find((function(e){return e===n}))||t.unshift(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"upcoming\",onClick:a.incrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-upcoming\"}))),r&&a.state.yearsList.find((function(e){return e===r}))||t.push(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"previous\",onClick:a.decrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-previous\"}))),t})),mt(bt(a),\"onChange\",(function(e){a.props.onChange(e)})),mt(bt(a),\"handleClickOutside\",(function(){a.props.onCancel()})),mt(bt(a),\"shiftYears\",(function(e){var t=a.state.yearsList.map((function(t){return t+e}));a.setState({yearsList:t})})),mt(bt(a),\"incrementYears\",(function(){return a.shiftYears(1)})),mt(bt(a),\"decrementYears\",(function(){return a.shiftYears(-1)}));var n=e.yearDropdownItemNumber,o=e.scrollableYearDropdown,s=n||(o?10:5);return a.state={yearsList:br(a.props.year,s,a.props.minDate,a.props.maxDate)},a}return ht(r,[{key:\"render\",value:function(){var e=ce.default({\"react-datepicker__year-dropdown\":!0,\"react-datepicker__year-dropdown--scrollable\":this.props.scrollableYearDropdown});return de.default.createElement(\"div\",{className:e},this.renderOptions())}}]),r}(de.default.Component),Sr=lt.default(Cr),_r=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"state\",{dropdownVisible:!1}),mt(bt(e),\"renderSelectOptions\",(function(){for(var t=e.props.minDate?Te.default(e.props.minDate):1900,r=e.props.maxDate?Te.default(e.props.maxDate):2100,a=[],n=t;n<=r;n++)a.push(de.default.createElement(\"option\",{key:n,value:n},n));return a})),mt(bt(e),\"onSelectChange\",(function(t){e.onChange(t.target.value)})),mt(bt(e),\"renderSelectMode\",(function(){return de.default.createElement(\"select\",{value:e.props.year,className:\"react-datepicker__year-select\",onChange:e.onSelectChange},e.renderSelectOptions())})),mt(bt(e),\"renderReadView\",(function(t){return de.default.createElement(\"div\",{key:\"read\",style:{visibility:t?\"visible\":\"hidden\"},className:\"react-datepicker__year-read-view\",onClick:function(t){return e.toggleDropdown(t)}},de.default.createElement(\"span\",{className:\"react-datepicker__year-read-view--down-arrow\"}),de.default.createElement(\"span\",{className:\"react-datepicker__year-read-view--selected-year\"},e.props.year))})),mt(bt(e),\"renderDropdown\",(function(){return de.default.createElement(Sr,{key:\"dropdown\",year:e.props.year,onChange:e.onChange,onCancel:e.toggleDropdown,minDate:e.props.minDate,maxDate:e.props.maxDate,scrollableYearDropdown:e.props.scrollableYearDropdown,yearDropdownItemNumber:e.props.yearDropdownItemNumber})})),mt(bt(e),\"renderScrollMode\",(function(){var t=e.state.dropdownVisible,r=[e.renderReadView(!t)];return t&&r.unshift(e.renderDropdown()),r})),mt(bt(e),\"onChange\",(function(t){e.toggleDropdown(),t!==e.props.year&&e.props.onChange(t)})),mt(bt(e),\"toggleDropdown\",(function(t){e.setState({dropdownVisible:!e.state.dropdownVisible},(function(){e.props.adjustDateOnChange&&e.handleYearChange(e.props.date,t)}))})),mt(bt(e),\"handleYearChange\",(function(t,r){e.onSelect(t,r),e.setOpen()})),mt(bt(e),\"onSelect\",(function(t,r){e.props.onSelect&&e.props.onSelect(t,r)})),mt(bt(e),\"setOpen\",(function(){e.props.setOpen&&e.props.setOpen(!0)})),e}return ht(r,[{key:\"render\",value:function(){var e;switch(this.props.dropdownMode){case\"scroll\":e=this.renderScrollMode();break;case\"select\":e=this.renderSelectMode()}return de.default.createElement(\"div\",{className:\"react-datepicker__year-dropdown-container react-datepicker__year-dropdown-container--\".concat(this.props.dropdownMode)},e)}}]),r}(de.default.Component),Mr=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"renderOptions\",(function(){return e.props.monthNames.map((function(t,r){return de.default.createElement(\"div\",{className:e.props.month===r?\"react-datepicker__month-option react-datepicker__month-option--selected_month\":\"react-datepicker__month-option\",key:t,onClick:e.onChange.bind(bt(e),r)},e.props.month===r?de.default.createElement(\"span\",{className:\"react-datepicker__month-option--selected\"},\"✓\"):\"\",t)}))})),mt(bt(e),\"onChange\",(function(t){return e.props.onChange(t)})),mt(bt(e),\"handleClickOutside\",(function(){return e.props.onCancel()})),e}return ht(r,[{key:\"render\",value:function(){return de.default.createElement(\"div\",{className:\"react-datepicker__month-dropdown\"},this.renderOptions())}}]),r}(de.default.Component),Pr=lt.default(Mr),Er=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"state\",{dropdownVisible:!1}),mt(bt(e),\"renderSelectOptions\",(function(e){return e.map((function(e,t){return de.default.createElement(\"option\",{key:t,value:t},e)}))})),mt(bt(e),\"renderSelectMode\",(function(t){return de.default.createElement(\"select\",{value:e.props.month,className:\"react-datepicker__month-select\",onChange:function(t){return e.onChange(t.target.value)}},e.renderSelectOptions(t))})),mt(bt(e),\"renderReadView\",(function(t,r){return de.default.createElement(\"div\",{key:\"read\",style:{visibility:t?\"visible\":\"hidden\"},className:\"react-datepicker__month-read-view\",onClick:e.toggleDropdown},de.default.createElement(\"span\",{className:\"react-datepicker__month-read-view--down-arrow\"}),de.default.createElement(\"span\",{className:\"react-datepicker__month-read-view--selected-month\"},r[e.props.month]))})),mt(bt(e),\"renderDropdown\",(function(t){return de.default.createElement(Pr,{key:\"dropdown\",month:e.props.month,monthNames:t,onChange:e.onChange,onCancel:e.toggleDropdown})})),mt(bt(e),\"renderScrollMode\",(function(t){var r=e.state.dropdownVisible,a=[e.renderReadView(!r,t)];return r&&a.unshift(e.renderDropdown(t)),a})),mt(bt(e),\"onChange\",(function(t){e.toggleDropdown(),t!==e.props.month&&e.props.onChange(t)})),mt(bt(e),\"toggleDropdown\",(function(){return e.setState({dropdownVisible:!e.state.dropdownVisible})})),e}return ht(r,[{key:\"render\",value:function(){var e,t=this,r=[0,1,2,3,4,5,6,7,8,9,10,11].map(this.props.useShortMonthInDropdown?function(e){return Zt(e,t.props.locale)}:function(e){return Xt(e,t.props.locale)});switch(this.props.dropdownMode){case\"scroll\":e=this.renderScrollMode(r);break;case\"select\":e=this.renderSelectMode(r)}return de.default.createElement(\"div\",{className:\"react-datepicker__month-dropdown-container react-datepicker__month-dropdown-container--\".concat(this.props.dropdownMode)},e)}}]),r}(de.default.Component);function Nr(e,t){for(var r=[],a=Bt(e),n=Bt(t);!at.default(a,n);)r.push(xt(a)),a=we.default(a,1);return r}var Or=function(e){wt(r,e);var t=St(r);function r(e){var a;return ut(this,r),mt(bt(a=t.call(this,e)),\"renderOptions\",(function(){return a.state.monthYearsList.map((function(e){var t=Ie.default(e),r=Kt(a.props.date,e)&&Qt(a.props.date,e);return de.default.createElement(\"div\",{className:r?\"react-datepicker__month-year-option --selected_month-year\":\"react-datepicker__month-year-option\",key:t,onClick:a.onChange.bind(bt(a),t)},r?de.default.createElement(\"span\",{className:\"react-datepicker__month-year-option--selected\"},\"✓\"):\"\",Lt(e,a.props.dateFormat,a.props.locale))}))})),mt(bt(a),\"onChange\",(function(e){return a.props.onChange(e)})),mt(bt(a),\"handleClickOutside\",(function(){a.props.onCancel()})),a.state={monthYearsList:Nr(a.props.minDate,a.props.maxDate)},a}return ht(r,[{key:\"render\",value:function(){var e=ce.default({\"react-datepicker__month-year-dropdown\":!0,\"react-datepicker__month-year-dropdown--scrollable\":this.props.scrollableMonthYearDropdown});return de.default.createElement(\"div\",{className:e},this.renderOptions())}}]),r}(de.default.Component),Yr=lt.default(Or),xr=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"state\",{dropdownVisible:!1}),mt(bt(e),\"renderSelectOptions\",(function(){for(var t=Bt(e.props.minDate),r=Bt(e.props.maxDate),a=[];!at.default(t,r);){var n=Ie.default(t);a.push(de.default.createElement(\"option\",{key:n,value:n},Lt(t,e.props.dateFormat,e.props.locale))),t=we.default(t,1)}return a})),mt(bt(e),\"onSelectChange\",(function(t){e.onChange(t.target.value)})),mt(bt(e),\"renderSelectMode\",(function(){return de.default.createElement(\"select\",{value:Ie.default(Bt(e.props.date)),className:\"react-datepicker__month-year-select\",onChange:e.onSelectChange},e.renderSelectOptions())})),mt(bt(e),\"renderReadView\",(function(t){var r=Lt(e.props.date,e.props.dateFormat,e.props.locale);return de.default.createElement(\"div\",{key:\"read\",style:{visibility:t?\"visible\":\"hidden\"},className:\"react-datepicker__month-year-read-view\",onClick:function(t){return e.toggleDropdown(t)}},de.default.createElement(\"span\",{className:\"react-datepicker__month-year-read-view--down-arrow\"}),de.default.createElement(\"span\",{className:\"react-datepicker__month-year-read-view--selected-month-year\"},r))})),mt(bt(e),\"renderDropdown\",(function(){return de.default.createElement(Yr,{key:\"dropdown\",date:e.props.date,dateFormat:e.props.dateFormat,onChange:e.onChange,onCancel:e.toggleDropdown,minDate:e.props.minDate,maxDate:e.props.maxDate,scrollableMonthYearDropdown:e.props.scrollableMonthYearDropdown,locale:e.props.locale})})),mt(bt(e),\"renderScrollMode\",(function(){var t=e.state.dropdownVisible,r=[e.renderReadView(!t)];return t&&r.unshift(e.renderDropdown()),r})),mt(bt(e),\"onChange\",(function(t){e.toggleDropdown();var r=xt(parseInt(t));Kt(e.props.date,r)&&Qt(e.props.date,r)||e.props.onChange(r)})),mt(bt(e),\"toggleDropdown\",(function(){return e.setState({dropdownVisible:!e.state.dropdownVisible})})),e}return ht(r,[{key:\"render\",value:function(){var e;switch(this.props.dropdownMode){case\"scroll\":e=this.renderScrollMode();break;case\"select\":e=this.renderSelectMode()}return de.default.createElement(\"div\",{className:\"react-datepicker__month-year-dropdown-container react-datepicker__month-year-dropdown-container--\".concat(this.props.dropdownMode)},e)}}]),r}(de.default.Component),Tr=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"dayEl\",de.default.createRef()),mt(bt(e),\"handleClick\",(function(t){!e.isDisabled()&&e.props.onClick&&e.props.onClick(t)})),mt(bt(e),\"handleMouseEnter\",(function(t){!e.isDisabled()&&e.props.onMouseEnter&&e.props.onMouseEnter(t)})),mt(bt(e),\"handleOnKeyDown\",(function(t){\" \"===t.key&&(t.preventDefault(),t.key=\"Enter\"),e.props.handleOnKeyDown(t)})),mt(bt(e),\"isSameDay\",(function(t){return Ut(e.props.day,t)})),mt(bt(e),\"isKeyboardSelected\",(function(){return!e.props.disabledKeyboardNavigation&&!e.isSameDay(e.props.selected)&&e.isSameDay(e.props.preSelection)})),mt(bt(e),\"isDisabled\",(function(){return tr(e.props.day,e.props)})),mt(bt(e),\"isExcluded\",(function(){return rr(e.props.day,e.props)})),mt(bt(e),\"getHighLightedClass\",(function(t){var r=e.props,a=r.day,n=r.highlightDates;if(!n)return!1;var o=Lt(a,\"MM.dd.yyyy\");return n.get(o)})),mt(bt(e),\"isInRange\",(function(){var t=e.props,r=t.day,a=t.startDate,n=t.endDate;return!(!a||!n)&&zt(r,a,n)})),mt(bt(e),\"isInSelectingRange\",(function(){var t=e.props,r=t.day,a=t.selectsStart,n=t.selectsEnd,o=t.selectsRange,s=t.selectingDate,i=t.startDate,p=t.endDate;return!(!(a||n||o)||!s||e.isDisabled())&&(a&&p&&(nt.default(s,p)||$t(s,p))?zt(r,s,p):(n&&i&&(at.default(s,i)||$t(s,i))||!(!o||!i||p||!at.default(s,i)&&!$t(s,i)))&&zt(r,i,s))})),mt(bt(e),\"isSelectingRangeStart\",(function(){if(!e.isInSelectingRange())return!1;var t=e.props,r=t.day,a=t.selectingDate,n=t.startDate;return Ut(r,t.selectsStart?a:n)})),mt(bt(e),\"isSelectingRangeEnd\",(function(){if(!e.isInSelectingRange())return!1;var t=e.props,r=t.day,a=t.selectingDate,n=t.endDate;return Ut(r,t.selectsEnd?a:n)})),mt(bt(e),\"isRangeStart\",(function(){var t=e.props,r=t.day,a=t.startDate,n=t.endDate;return!(!a||!n)&&Ut(a,r)})),mt(bt(e),\"isRangeEnd\",(function(){var t=e.props,r=t.day,a=t.startDate,n=t.endDate;return!(!a||!n)&&Ut(n,r)})),mt(bt(e),\"isWeekend\",(function(){var t=Ee.default(e.props.day);return 0===t||6===t})),mt(bt(e),\"isOutsideMonth\",(function(){return void 0!==e.props.month&&e.props.month!==Ye.default(e.props.day)})),mt(bt(e),\"getClassNames\",(function(t){var r=e.props.dayClassName?e.props.dayClassName(t):void 0;return ce.default(\"react-datepicker__day\",r,\"react-datepicker__day--\"+qt(e.props.day),{\"react-datepicker__day--disabled\":e.isDisabled(),\"react-datepicker__day--excluded\":e.isExcluded(),\"react-datepicker__day--selected\":e.isSameDay(e.props.selected),\"react-datepicker__day--keyboard-selected\":e.isKeyboardSelected(),\"react-datepicker__day--range-start\":e.isRangeStart(),\"react-datepicker__day--range-end\":e.isRangeEnd(),\"react-datepicker__day--in-range\":e.isInRange(),\"react-datepicker__day--in-selecting-range\":e.isInSelectingRange(),\"react-datepicker__day--selecting-range-start\":e.isSelectingRangeStart(),\"react-datepicker__day--selecting-range-end\":e.isSelectingRangeEnd(),\"react-datepicker__day--today\":e.isSameDay(xt()),\"react-datepicker__day--weekend\":e.isWeekend(),\"react-datepicker__day--outside-month\":e.isOutsideMonth()},e.getHighLightedClass(\"react-datepicker__day--highlighted\"))})),mt(bt(e),\"getAriaLabel\",(function(){var t=e.props,r=t.day,a=t.ariaLabelPrefixWhenEnabled,n=void 0===a?\"Choose\":a,o=t.ariaLabelPrefixWhenDisabled,s=void 0===o?\"Not available\":o,i=e.isDisabled()||e.isExcluded()?s:n;return\"\".concat(i,\" \").concat(Lt(r,\"PPPP\"))})),mt(bt(e),\"getTabIndex\",(function(t,r){var a=t||e.props.selected,n=r||e.props.preSelection;return e.isKeyboardSelected()||e.isSameDay(a)&&Ut(n,a)?0:-1})),mt(bt(e),\"handleFocusDay\",(function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=!1;0===e.getTabIndex()&&!t.isInputFocused&&e.isSameDay(e.props.preSelection)&&(document.activeElement&&document.activeElement!==document.body||(r=!0),e.props.inline&&!e.props.shouldFocusDayInline&&(r=!1),e.props.containerRef&&e.props.containerRef.current&&e.props.containerRef.current.contains(document.activeElement)&&document.activeElement.classList.contains(\"react-datepicker__day\")&&(r=!0)),r&&e.dayEl.current.focus({preventScroll:!0})})),mt(bt(e),\"renderDayContents\",(function(){if(e.isOutsideMonth()){if(e.props.monthShowsDuplicateDaysEnd&&Ne.default(e.props.day)<10)return null;if(e.props.monthShowsDuplicateDaysStart&&Ne.default(e.props.day)>20)return null}return e.props.renderDayContents?e.props.renderDayContents(Ne.default(e.props.day),e.props.day):Ne.default(e.props.day)})),mt(bt(e),\"render\",(function(){return de.default.createElement(\"div\",{ref:e.dayEl,className:e.getClassNames(e.props.day),onKeyDown:e.handleOnKeyDown,onClick:e.handleClick,onMouseEnter:e.handleMouseEnter,tabIndex:e.getTabIndex(),\"aria-label\":e.getAriaLabel(),role:\"button\",\"aria-disabled\":e.isDisabled()},e.renderDayContents())})),e}return ht(r,[{key:\"componentDidMount\",value:function(){this.handleFocusDay()}},{key:\"componentDidUpdate\",value:function(e){this.handleFocusDay(e)}}]),r}(de.default.Component),Ir=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"handleClick\",(function(t){e.props.onClick&&e.props.onClick(t)})),e}return ht(r,[{key:\"render\",value:function(){var e=this.props,t=e.weekNumber,r=e.ariaLabelPrefix,a=void 0===r?\"week \":r,n={\"react-datepicker__week-number\":!0,\"react-datepicker__week-number--clickable\":!!e.onClick};return de.default.createElement(\"div\",{className:ce.default(n),\"aria-label\":\"\".concat(a,\" \").concat(this.props.weekNumber),onClick:this.handleClick},t)}}]),r}(de.default.Component),Lr=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"handleDayClick\",(function(t,r){e.props.onDayClick&&e.props.onDayClick(t,r)})),mt(bt(e),\"handleDayMouseEnter\",(function(t){e.props.onDayMouseEnter&&e.props.onDayMouseEnter(t)})),mt(bt(e),\"handleWeekClick\",(function(t,r,a){\"function\"==typeof e.props.onWeekSelect&&e.props.onWeekSelect(t,r,a),e.props.shouldCloseOnSelect&&e.props.setOpen(!1)})),mt(bt(e),\"formatWeekNumber\",(function(t){return e.props.formatWeekNumber?e.props.formatWeekNumber(t):Rt(t)})),mt(bt(e),\"renderDays\",(function(){var t=Wt(e.props.day,e.props.locale),r=[],a=e.formatWeekNumber(t);if(e.props.showWeekNumber){var n=e.props.onWeekSelect?e.handleWeekClick.bind(bt(e),t,a):void 0;r.push(de.default.createElement(Ir,{key:\"W\",weekNumber:a,onClick:n,ariaLabelPrefix:e.props.ariaLabelPrefix}))}return r.concat([0,1,2,3,4,5,6].map((function(r){var a=ve.default(t,r);return de.default.createElement(Tr,{ariaLabelPrefixWhenEnabled:e.props.chooseDayAriaLabelPrefix,ariaLabelPrefixWhenDisabled:e.props.disabledDayAriaLabelPrefix,key:a.valueOf(),day:a,month:e.props.month,onClick:e.handleDayClick.bind(bt(e),a),onMouseEnter:e.handleDayMouseEnter.bind(bt(e),a),minDate:e.props.minDate,maxDate:e.props.maxDate,excludeDates:e.props.excludeDates,includeDates:e.props.includeDates,highlightDates:e.props.highlightDates,selectingDate:e.props.selectingDate,filterDate:e.props.filterDate,preSelection:e.props.preSelection,selected:e.props.selected,selectsStart:e.props.selectsStart,selectsEnd:e.props.selectsEnd,selectsRange:e.props.selectsRange,startDate:e.props.startDate,endDate:e.props.endDate,dayClassName:e.props.dayClassName,renderDayContents:e.props.renderDayContents,disabledKeyboardNavigation:e.props.disabledKeyboardNavigation,handleOnKeyDown:e.props.handleOnKeyDown,isInputFocused:e.props.isInputFocused,containerRef:e.props.containerRef,inline:e.props.inline,shouldFocusDayInline:e.props.shouldFocusDayInline,monthShowsDuplicateDaysEnd:e.props.monthShowsDuplicateDaysEnd,monthShowsDuplicateDaysStart:e.props.monthShowsDuplicateDaysStart})})))})),e}return ht(r,[{key:\"render\",value:function(){return de.default.createElement(\"div\",{className:\"react-datepicker__week\"},this.renderDays())}}],[{key:\"defaultProps\",get:function(){return{shouldCloseOnSelect:!0}}}]),r}(de.default.Component),Fr=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"MONTH_REFS\",_t(Array(12)).map((function(){return de.default.createRef()}))),mt(bt(e),\"isDisabled\",(function(t){return tr(t,e.props)})),mt(bt(e),\"isExcluded\",(function(t){return rr(t,e.props)})),mt(bt(e),\"handleDayClick\",(function(t,r){e.props.onDayClick&&e.props.onDayClick(t,r,e.props.orderInDisplay)})),mt(bt(e),\"handleDayMouseEnter\",(function(t){e.props.onDayMouseEnter&&e.props.onDayMouseEnter(t)})),mt(bt(e),\"handleMouseLeave\",(function(){e.props.onMouseLeave&&e.props.onMouseLeave()})),mt(bt(e),\"isRangeStartMonth\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate;return!(!n||!o)&&Qt(qe.default(a,t),n)})),mt(bt(e),\"isRangeStartQuarter\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate;return!(!n||!o)&&Vt(Ae.default(a,t),n)})),mt(bt(e),\"isRangeEndMonth\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate;return!(!n||!o)&&Qt(qe.default(a,t),o)})),mt(bt(e),\"isRangeEndQuarter\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate;return!(!n||!o)&&Vt(Ae.default(a,t),o)})),mt(bt(e),\"isWeekInMonth\",(function(t){var r=e.props.day,a=ve.default(t,6);return Qt(t,r)||Qt(a,r)})),mt(bt(e),\"renderWeeks\",(function(){for(var t=[],r=e.props.fixedHeight,a=Wt(Bt(e.props.day),e.props.locale),n=0,o=!1;t.push(de.default.createElement(Lr,{ariaLabelPrefix:e.props.weekAriaLabelPrefix,chooseDayAriaLabelPrefix:e.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:e.props.disabledDayAriaLabelPrefix,key:n,day:a,month:Ye.default(e.props.day),onDayClick:e.handleDayClick,onDayMouseEnter:e.handleDayMouseEnter,onWeekSelect:e.props.onWeekSelect,formatWeekNumber:e.props.formatWeekNumber,locale:e.props.locale,minDate:e.props.minDate,maxDate:e.props.maxDate,excludeDates:e.props.excludeDates,includeDates:e.props.includeDates,inline:e.props.inline,shouldFocusDayInline:e.props.shouldFocusDayInline,highlightDates:e.props.highlightDates,selectingDate:e.props.selectingDate,filterDate:e.props.filterDate,preSelection:e.props.preSelection,selected:e.props.selected,selectsStart:e.props.selectsStart,selectsEnd:e.props.selectsEnd,selectsRange:e.props.selectsRange,showWeekNumber:e.props.showWeekNumbers,startDate:e.props.startDate,endDate:e.props.endDate,dayClassName:e.props.dayClassName,setOpen:e.props.setOpen,shouldCloseOnSelect:e.props.shouldCloseOnSelect,disabledKeyboardNavigation:e.props.disabledKeyboardNavigation,renderDayContents:e.props.renderDayContents,handleOnKeyDown:e.props.handleOnKeyDown,isInputFocused:e.props.isInputFocused,containerRef:e.props.containerRef,monthShowsDuplicateDaysEnd:e.props.monthShowsDuplicateDaysEnd,monthShowsDuplicateDaysStart:e.props.monthShowsDuplicateDaysStart})),!o;){n++,a=De.default(a,1);var s=r&&n>=6,i=!r&&!e.isWeekInMonth(a);if(s||i){if(!e.props.peekNextMonth)break;o=!0}}return t})),mt(bt(e),\"onMonthClick\",(function(t,r){e.handleDayClick(Bt(qe.default(e.props.day,r)),t)})),mt(bt(e),\"handleMonthNavigation\",(function(t,r){e.isDisabled(r)||e.isExcluded(r)||(e.props.setPreSelection(r),e.MONTH_REFS[t].current&&e.MONTH_REFS[t].current.focus())})),mt(bt(e),\"onMonthKeyDown\",(function(t,r){var a=t.key;if(!e.props.disabledKeyboardNavigation)switch(a){case\"Enter\":e.onMonthClick(t,r),e.props.setPreSelection(e.props.selected);break;case\"ArrowRight\":e.handleMonthNavigation(11===r?0:r+1,we.default(e.props.preSelection,1));break;case\"ArrowLeft\":e.handleMonthNavigation(0===r?11:r-1,Ce.default(e.props.preSelection,1))}})),mt(bt(e),\"onQuarterClick\",(function(t,r){e.handleDayClick(Ht(Ae.default(e.props.day,r)),t)})),mt(bt(e),\"getMonthClassNames\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate,l=r.preSelection,d=r.monthClassName,c=d?d(a):void 0;return ce.default(\"react-datepicker__month-text\",\"react-datepicker__month-\".concat(t),c,{\"react-datepicker__month--disabled\":(i||p)&&ar(qe.default(a,t),e.props),\"react-datepicker__month--selected\":Ye.default(a)===t&&Te.default(a)===Te.default(s),\"react-datepicker__month-text--keyboard-selected\":Ye.default(l)===t,\"react-datepicker__month--in-range\":nr(n,o,t,a),\"react-datepicker__month--range-start\":e.isRangeStartMonth(t),\"react-datepicker__month--range-end\":e.isRangeEndMonth(t)})})),mt(bt(e),\"getTabIndex\",(function(t){var r=Ye.default(e.props.preSelection);return e.props.disabledKeyboardNavigation||t!==r?\"-1\":\"0\"})),mt(bt(e),\"getAriaLabel\",(function(t){var r=e.props,a=r.ariaLabelPrefix,n=void 0===a?\"Choose\":a,o=r.disabledDayAriaLabelPrefix,s=void 0===o?\"Not available\":o,i=r.day,p=qe.default(i,t),l=e.isDisabled(p)||e.isExcluded(p)?s:n;return\"\".concat(l,\" \").concat(Lt(p,\"MMMM yyyy\"))})),mt(bt(e),\"getQuarterClassNames\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate;return ce.default(\"react-datepicker__quarter-text\",\"react-datepicker__quarter-\".concat(t),{\"react-datepicker__quarter--disabled\":(i||p)&&or(Ae.default(a,t),e.props),\"react-datepicker__quarter--selected\":xe.default(a)===t&&Te.default(a)===Te.default(s),\"react-datepicker__quarter--in-range\":ir(n,o,t,a),\"react-datepicker__quarter--range-start\":e.isRangeStartQuarter(t),\"react-datepicker__quarter--range-end\":e.isRangeEndQuarter(t)})})),mt(bt(e),\"renderMonths\",(function(){var t=e.props,r=t.showFullMonthYearPicker,a=t.showTwoColumnMonthYearPicker,n=t.showFourColumnMonthYearPicker,o=t.locale;return(n?[[0,1,2,3],[4,5,6,7],[8,9,10,11]]:a?[[0,1],[2,3],[4,5],[6,7],[8,9],[10,11]]:[[0,1,2],[3,4,5],[6,7,8],[9,10,11]]).map((function(t,a){return de.default.createElement(\"div\",{className:\"react-datepicker__month-wrapper\",key:a},t.map((function(t,a){return de.default.createElement(\"div\",{ref:e.MONTH_REFS[t],key:a,onClick:function(r){e.onMonthClick(r,t)},onKeyDown:function(r){e.onMonthKeyDown(r,t)},tabIndex:e.getTabIndex(t),className:e.getMonthClassNames(t),role:\"button\",\"aria-label\":e.getAriaLabel(t)},r?Xt(t,o):Zt(t,o))})))}))})),mt(bt(e),\"renderQuarters\",(function(){return de.default.createElement(\"div\",{className:\"react-datepicker__quarter-wrapper\"},[1,2,3,4].map((function(t,r){return de.default.createElement(\"div\",{key:r,onClick:function(r){e.onQuarterClick(r,t)},className:e.getQuarterClassNames(t)},er(t,e.props.locale))})))})),mt(bt(e),\"getClassNames\",(function(){var t=e.props;t.day;var r=t.selectingDate,a=t.selectsStart,n=t.selectsEnd,o=t.showMonthYearPicker,s=t.showQuarterYearPicker;return ce.default(\"react-datepicker__month\",{\"react-datepicker__month--selecting-range\":r&&(a||n)},{\"react-datepicker__monthPicker\":o},{\"react-datepicker__quarterPicker\":s})})),e}return ht(r,[{key:\"render\",value:function(){var e=this.props,t=e.showMonthYearPicker,r=e.showQuarterYearPicker,a=e.day,n=e.ariaLabelPrefix,o=void 0===n?\"month \":n;return de.default.createElement(\"div\",{className:this.getClassNames(),onMouseLeave:this.handleMouseLeave,\"aria-label\":\"\".concat(o,\" \").concat(Lt(a,\"yyyy-MM\"))},t?this.renderMonths():r?this.renderQuarters():this.renderWeeks())}}]),r}(de.default.Component),Rr=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"state\",{height:null}),mt(bt(e),\"handleClick\",(function(t){(e.props.minTime||e.props.maxTime)&&cr(t,e.props)||(e.props.excludeTimes||e.props.includeTimes||e.props.filterTime)&&dr(t,e.props)||e.props.onChange(t)})),mt(bt(e),\"liClasses\",(function(t,r,a){var n=[\"react-datepicker__time-list-item\",e.props.timeClassName?e.props.timeClassName(t,r,a):void 0];return e.props.selected&&r===Pe.default(t)&&a===Me.default(t)&&n.push(\"react-datepicker__time-list-item--selected\"),((e.props.minTime||e.props.maxTime)&&cr(t,e.props)||(e.props.excludeTimes||e.props.includeTimes||e.props.filterTime)&&dr(t,e.props))&&n.push(\"react-datepicker__time-list-item--disabled\"),e.props.injectTimes&&(60*Pe.default(t)+Me.default(t))%e.props.intervals!=0&&n.push(\"react-datepicker__time-list-item--injected\"),n.join(\" \")})),mt(bt(e),\"renderTimes\",(function(){for(var t=[],r=e.props.format?e.props.format:\"p\",a=e.props.intervals,n=At(xt(e.props.selected)),o=1440/a,s=e.props.injectTimes&&e.props.injectTimes.sort((function(e,t){return e-t})),i=e.props.selected||e.props.openToDate||xt(),p=Pe.default(i),l=Me.default(i),d=Re.default(Fe.default(n,l),p),c=0;c<o;c++){var u=me.default(n,c*a);if(t.push(u),s){var f=wr(n,u,c,a,s);t=t.concat(f)}}return t.map((function(t,a){return de.default.createElement(\"li\",{key:a,onClick:e.handleClick.bind(bt(e),t),className:e.liClasses(t,p,l),ref:function(r){(nt.default(t,d)||$t(t,d))&&(e.centerLi=r)},tabIndex:\"0\"},Lt(t,r,e.props.locale))}))})),e}return ht(r,[{key:\"componentDidMount\",value:function(){this.list.scrollTop=r.calcCenterPosition(this.props.monthRef?this.props.monthRef.clientHeight-this.header.clientHeight:this.list.clientHeight,this.centerLi),this.props.monthRef&&this.header&&this.setState({height:this.props.monthRef.clientHeight-this.header.clientHeight})}},{key:\"render\",value:function(){var e=this,t=this.state.height;return de.default.createElement(\"div\",{className:\"react-datepicker__time-container \".concat(this.props.todayButton?\"react-datepicker__time-container--with-today-button\":\"\")},de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker__header--time \".concat(this.props.showTimeSelectOnly?\"react-datepicker__header--time--only\":\"\"),ref:function(t){e.header=t}},de.default.createElement(\"div\",{className:\"react-datepicker-time__header\"},this.props.timeCaption)),de.default.createElement(\"div\",{className:\"react-datepicker__time\"},de.default.createElement(\"div\",{className:\"react-datepicker__time-box\"},de.default.createElement(\"ul\",{className:\"react-datepicker__time-list\",ref:function(t){e.list=t},style:t?{height:t}:{},tabIndex:\"0\"},this.renderTimes()))))}}],[{key:\"defaultProps\",get:function(){return{intervals:30,onTimeChange:function(){},todayButton:null,timeCaption:\"Time\"}}}]),r}(de.default.Component);mt(Rr,\"calcCenterPosition\",(function(e,t){return t.offsetTop-(e/2-t.clientHeight/2)}));var qr=function(e){wt(r,e);var t=St(r);function r(e){var a;return ut(this,r),mt(bt(a=t.call(this,e)),\"handleYearClick\",(function(e,t){a.props.onDayClick&&a.props.onDayClick(e,t)})),mt(bt(a),\"isSameDay\",(function(e,t){return Ut(e,t)})),mt(bt(a),\"isKeyboardSelected\",(function(e){var t=jt(We.default(a.props.date,e));return!a.props.disabledKeyboardNavigation&&!a.props.inline&&!Ut(t,jt(a.props.selected))&&Ut(t,jt(a.props.preSelection))})),mt(bt(a),\"onYearClick\",(function(e,t){var r=a.props.date;a.handleYearClick(jt(We.default(r,t)),e)})),mt(bt(a),\"getYearClassNames\",(function(e){var t=a.props,r=t.minDate,n=t.maxDate,o=t.selected;return ce.default(\"react-datepicker__year-text\",{\"react-datepicker__year-text--selected\":e===Te.default(o),\"react-datepicker__year-text--disabled\":(r||n)&&sr(e,a.props),\"react-datepicker__year-text--keyboard-selected\":a.isKeyboardSelected(e),\"react-datepicker__year-text--today\":e===Te.default(xt())})})),a}return ht(r,[{key:\"render\",value:function(){for(var e=this,t=[],r=this.props,a=gr(r.date,r.yearItemNumber),n=a.startPeriod,o=a.endPeriod,s=function(r){t.push(de.default.createElement(\"div\",{onClick:function(t){e.onYearClick(t,r)},className:e.getYearClassNames(r),key:r},r))},i=n;i<=o;i++)s(i);return de.default.createElement(\"div\",{className:\"react-datepicker__year\"},de.default.createElement(\"div\",{className:\"react-datepicker__year-wrapper\"},t))}}]),r}(de.default.Component),Ar=function(e){wt(r,e);var t=St(r);function r(e){var a;return ut(this,r),mt(bt(a=t.call(this,e)),\"onTimeChange\",(function(e){a.setState({time:e});var t=new Date;t.setHours(e.split(\":\")[0]),t.setMinutes(e.split(\":\")[1]),a.props.onChange(t)})),mt(bt(a),\"renderTimeInput\",(function(){var e=a.state.time,t=a.props,r=t.date,n=t.timeString,o=t.customTimeInput;return o?de.default.cloneElement(o,{date:r,value:e,onChange:a.onTimeChange}):de.default.createElement(\"input\",{type:\"time\",className:\"react-datepicker-time__input\",placeholder:\"Time\",name:\"time-input\",required:!0,value:e,onChange:function(e){a.onTimeChange(e.target.value||n)}})})),a.state={time:a.props.timeString},a}return ht(r,[{key:\"render\",value:function(){return de.default.createElement(\"div\",{className:\"react-datepicker__input-time-container\"},de.default.createElement(\"div\",{className:\"react-datepicker-time__caption\"},this.props.timeInputLabel),de.default.createElement(\"div\",{className:\"react-datepicker-time__input-container\"},de.default.createElement(\"div\",{className:\"react-datepicker-time__input\"},this.renderTimeInput())))}}],[{key:\"getDerivedStateFromProps\",value:function(e,t){return e.timeString!==t.time?{time:e.timeString}:null}}]),r}(de.default.Component);function Wr(e){var t=e.className,r=e.children,a=e.showPopperArrow,n=e.arrowProps,o=void 0===n?{}:n;return de.default.createElement(\"div\",{className:t},a&&de.default.createElement(\"div\",yt({className:\"react-datepicker__triangle\"},o)),r)}var Br=[\"react-datepicker__year-select\",\"react-datepicker__month-select\",\"react-datepicker__month-year-select\"],jr=function(e){wt(r,e);var t=St(r);function r(e){var a;return ut(this,r),mt(bt(a=t.call(this,e)),\"handleClickOutside\",(function(e){a.props.onClickOutside(e)})),mt(bt(a),\"setClickOutsideRef\",(function(){return a.containerRef.current})),mt(bt(a),\"handleDropdownFocus\",(function(e){(function(){var e=((arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).className||\"\").split(/\\s+/);return Br.some((function(t){return e.indexOf(t)>=0}))})(e.target)&&a.props.onDropdownFocus()})),mt(bt(a),\"getDateInView\",(function(){var e=a.props,t=e.preSelection,r=e.selected,n=e.openToDate,o=yr(a.props),s=vr(a.props),i=xt(),p=n||r||t;return p||(o&&nt.default(i,o)?o:s&&at.default(i,s)?s:i)})),mt(bt(a),\"increaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:we.default(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),mt(bt(a),\"decreaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:Ce.default(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),mt(bt(a),\"handleDayClick\",(function(e,t,r){a.props.onSelect(e,t,r),a.props.setPreSelection&&a.props.setPreSelection(e)})),mt(bt(a),\"handleDayMouseEnter\",(function(e){a.setState({selectingDate:e}),a.props.onDayMouseEnter&&a.props.onDayMouseEnter(e)})),mt(bt(a),\"handleMonthMouseLeave\",(function(){a.setState({selectingDate:null}),a.props.onMonthMouseLeave&&a.props.onMonthMouseLeave()})),mt(bt(a),\"handleYearChange\",(function(e){a.props.onYearChange&&a.props.onYearChange(e),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),mt(bt(a),\"handleMonthChange\",(function(e){a.props.onMonthChange&&a.props.onMonthChange(e),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),mt(bt(a),\"handleMonthYearChange\",(function(e){a.handleYearChange(e),a.handleMonthChange(e)})),mt(bt(a),\"changeYear\",(function(e){a.setState((function(t){var r=t.date;return{date:We.default(r,e)}}),(function(){return a.handleYearChange(a.state.date)}))})),mt(bt(a),\"changeMonth\",(function(e){a.setState((function(t){var r=t.date;return{date:qe.default(r,e)}}),(function(){return a.handleMonthChange(a.state.date)}))})),mt(bt(a),\"changeMonthYear\",(function(e){a.setState((function(t){var r=t.date;return{date:We.default(qe.default(r,Ye.default(e)),Te.default(e))}}),(function(){return a.handleMonthYearChange(a.state.date)}))})),mt(bt(a),\"header\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.state.date,t=Wt(e,a.props.locale),r=[];return a.props.showWeekNumbers&&r.push(de.default.createElement(\"div\",{key:\"W\",className:\"react-datepicker__day-name\"},a.props.weekLabel||\"#\")),r.concat([0,1,2,3,4,5,6].map((function(e){var r=ve.default(t,e),n=a.formatWeekday(r,a.props.locale),o=a.props.weekDayClassName?a.props.weekDayClassName(r):void 0;return de.default.createElement(\"div\",{key:e,className:ce.default(\"react-datepicker__day-name\",o)},n)})))})),mt(bt(a),\"formatWeekday\",(function(e,t){return a.props.formatWeekDay?function(e,t,r){return t(Lt(e,\"EEEE\",r))}(e,a.props.formatWeekDay,t):a.props.useWeekdaysShort?function(e,t){return Lt(e,\"EEE\",t)}(e,t):function(e,t){return Lt(e,\"EEEEEE\",t)}(e,t)})),mt(bt(a),\"decreaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:Se.default(t,a.props.showYearPicker?a.props.yearItemNumber:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),mt(bt(a),\"renderPreviousButton\",(function(){if(!a.props.renderCustomHeader){var e;switch(!0){case a.props.showMonthYearPicker:e=hr(a.state.date,a.props);break;case a.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.yearItemNumber,n=void 0===a?Ot:a,o=gr(jt(Se.default(e,n)),n).endPeriod,s=r&&Te.default(r);return s&&s>o||!1}(a.state.date,a.props);break;default:e=ur(a.state.date,a.props)}if((a.props.forceShowMonthNavigation||a.props.showDisabledMonthNavigation||!e)&&!a.props.showTimeSelectOnly){var t=[\"react-datepicker__navigation\",\"react-datepicker__navigation--previous\"],r=a.decreaseMonth;(a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker)&&(r=a.decreaseYear),e&&a.props.showDisabledMonthNavigation&&(t.push(\"react-datepicker__navigation--previous--disabled\"),r=null);var n=a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker,o=a.props,s=o.previousMonthAriaLabel,i=void 0===s?\"Previous Month\":s,p=o.previousYearAriaLabel,l=void 0===p?\"Previous Year\":p;return de.default.createElement(\"button\",{type:\"button\",className:t.join(\" \"),onClick:r,\"aria-label\":n?l:i},n?a.props.previousYearButtonLabel:a.props.previousMonthButtonLabel)}}})),mt(bt(a),\"increaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:ke.default(t,a.props.showYearPicker?a.props.yearItemNumber:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),mt(bt(a),\"renderNextButton\",(function(){if(!a.props.renderCustomHeader){var e;switch(!0){case a.props.showMonthYearPicker:e=mr(a.state.date,a.props);break;case a.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.yearItemNumber,n=void 0===a?Ot:a,o=gr(ke.default(e,n),n).startPeriod,s=r&&Te.default(r);return s&&s<o||!1}(a.state.date,a.props);break;default:e=fr(a.state.date,a.props)}if((a.props.forceShowMonthNavigation||a.props.showDisabledMonthNavigation||!e)&&!a.props.showTimeSelectOnly){var t=[\"react-datepicker__navigation\",\"react-datepicker__navigation--next\"];a.props.showTimeSelect&&t.push(\"react-datepicker__navigation--next--with-time\"),a.props.todayButton&&t.push(\"react-datepicker__navigation--next--with-today-button\");var r=a.increaseMonth;(a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker)&&(r=a.increaseYear),e&&a.props.showDisabledMonthNavigation&&(t.push(\"react-datepicker__navigation--next--disabled\"),r=null);var n=a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker,o=a.props,s=o.nextMonthAriaLabel,i=void 0===s?\"Next Month\":s,p=o.nextYearAriaLabel,l=void 0===p?\"Next Year\":p;return de.default.createElement(\"button\",{type:\"button\",className:t.join(\" \"),onClick:r,\"aria-label\":n?l:i},n?a.props.nextYearButtonLabel:a.props.nextMonthButtonLabel)}}})),mt(bt(a),\"renderCurrentMonth\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.state.date,t=[\"react-datepicker__current-month\"];return a.props.showYearDropdown&&t.push(\"react-datepicker__current-month--hasYearDropdown\"),a.props.showMonthDropdown&&t.push(\"react-datepicker__current-month--hasMonthDropdown\"),a.props.showMonthYearDropdown&&t.push(\"react-datepicker__current-month--hasMonthYearDropdown\"),de.default.createElement(\"div\",{className:t.join(\" \")},Lt(e,a.props.dateFormat,a.props.locale))})),mt(bt(a),\"renderYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showYearDropdown&&!e)return de.default.createElement(_r,{adjustDateOnChange:a.props.adjustDateOnChange,date:a.state.date,onSelect:a.props.onSelect,setOpen:a.props.setOpen,dropdownMode:a.props.dropdownMode,onChange:a.changeYear,minDate:a.props.minDate,maxDate:a.props.maxDate,year:Te.default(a.state.date),scrollableYearDropdown:a.props.scrollableYearDropdown,yearDropdownItemNumber:a.props.yearDropdownItemNumber})})),mt(bt(a),\"renderMonthDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthDropdown&&!e)return de.default.createElement(Er,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,onChange:a.changeMonth,month:Ye.default(a.state.date),useShortMonthInDropdown:a.props.useShortMonthInDropdown})})),mt(bt(a),\"renderMonthYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthYearDropdown&&!e)return de.default.createElement(xr,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,dateFormat:a.props.dateFormat,onChange:a.changeMonthYear,minDate:a.props.minDate,maxDate:a.props.maxDate,date:a.state.date,scrollableMonthYearDropdown:a.props.scrollableMonthYearDropdown})})),mt(bt(a),\"renderTodayButton\",(function(){if(a.props.todayButton&&!a.props.showTimeSelectOnly)return de.default.createElement(\"div\",{className:\"react-datepicker__today-button\",onClick:function(e){return a.props.onSelect(Ve.default(xt()),e)}},a.props.todayButton)})),mt(bt(a),\"renderDefaultHeader\",(function(e){var t=e.monthDate,r=e.i;return de.default.createElement(\"div\",{className:\"react-datepicker__header \".concat(a.props.showTimeSelect?\"react-datepicker__header--has-time-select\":\"\")},a.renderCurrentMonth(t),de.default.createElement(\"div\",{className:\"react-datepicker__header__dropdown react-datepicker__header__dropdown--\".concat(a.props.dropdownMode),onFocus:a.handleDropdownFocus},a.renderMonthDropdown(0!==r),a.renderMonthYearDropdown(0!==r),a.renderYearDropdown(0!==r)),de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(t)))})),mt(bt(a),\"renderCustomHeader\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.monthDate,r=e.i;if(a.props.showTimeSelect&&!a.state.monthContainer||a.props.showTimeSelectOnly)return null;var n=ur(a.state.date,a.props),o=fr(a.state.date,a.props),s=hr(a.state.date,a.props),i=mr(a.state.date,a.props),p=!a.props.showMonthYearPicker&&!a.props.showQuarterYearPicker&&!a.props.showYearPicker;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker__header--custom\",onFocus:a.props.onDropdownFocus},a.props.renderCustomHeader(Dt(Dt({},a.state),{},{customHeaderCount:r,changeMonth:a.changeMonth,changeYear:a.changeYear,decreaseMonth:a.decreaseMonth,increaseMonth:a.increaseMonth,decreaseYear:a.decreaseYear,increaseYear:a.increaseYear,prevMonthButtonDisabled:n,nextMonthButtonDisabled:o,prevYearButtonDisabled:s,nextYearButtonDisabled:i})),p&&de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(t)))})),mt(bt(a),\"renderYearHeader\",(function(){var e=a.state.date,t=a.props,r=t.showYearPicker,n=gr(e,t.yearItemNumber),o=n.startPeriod,s=n.endPeriod;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker-year-header\"},r?\"\".concat(o,\" - \").concat(s):Te.default(e))})),mt(bt(a),\"renderHeader\",(function(e){switch(!0){case void 0!==a.props.renderCustomHeader:return a.renderCustomHeader(e);case a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker:return a.renderYearHeader(e);default:return a.renderDefaultHeader(e)}})),mt(bt(a),\"renderMonths\",(function(){if(!a.props.showTimeSelectOnly&&!a.props.showYearPicker){for(var e=[],t=a.props.showPreviousMonths?a.props.monthsShown-1:0,r=Ce.default(a.state.date,t),n=0;n<a.props.monthsShown;++n){var o=n-a.props.monthSelectedIn,s=we.default(r,o),i=\"month-\".concat(n),p=n<a.props.monthsShown-1,l=n>0;e.push(de.default.createElement(\"div\",{key:i,ref:function(e){a.monthContainer=e},className:\"react-datepicker__month-container\"},a.renderHeader({monthDate:s,i:n}),de.default.createElement(Fr,{chooseDayAriaLabelPrefix:a.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:a.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:a.props.weekAriaLabelPrefix,onChange:a.changeMonthYear,day:s,dayClassName:a.props.dayClassName,monthClassName:a.props.monthClassName,onDayClick:a.handleDayClick,handleOnKeyDown:a.props.handleOnKeyDown,onDayMouseEnter:a.handleDayMouseEnter,onMouseLeave:a.handleMonthMouseLeave,onWeekSelect:a.props.onWeekSelect,orderInDisplay:n,formatWeekNumber:a.props.formatWeekNumber,locale:a.props.locale,minDate:a.props.minDate,maxDate:a.props.maxDate,excludeDates:a.props.excludeDates,highlightDates:a.props.highlightDates,selectingDate:a.state.selectingDate,includeDates:a.props.includeDates,inline:a.props.inline,shouldFocusDayInline:a.props.shouldFocusDayInline,fixedHeight:a.props.fixedHeight,filterDate:a.props.filterDate,preSelection:a.props.preSelection,setPreSelection:a.props.setPreSelection,selected:a.props.selected,selectsStart:a.props.selectsStart,selectsEnd:a.props.selectsEnd,selectsRange:a.props.selectsRange,showWeekNumbers:a.props.showWeekNumbers,startDate:a.props.startDate,endDate:a.props.endDate,peekNextMonth:a.props.peekNextMonth,setOpen:a.props.setOpen,shouldCloseOnSelect:a.props.shouldCloseOnSelect,renderDayContents:a.props.renderDayContents,disabledKeyboardNavigation:a.props.disabledKeyboardNavigation,showMonthYearPicker:a.props.showMonthYearPicker,showFullMonthYearPicker:a.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:a.props.showTwoColumnMonthYearPicker,showFourColumnMonthYearPicker:a.props.showFourColumnMonthYearPicker,showYearPicker:a.props.showYearPicker,showQuarterYearPicker:a.props.showQuarterYearPicker,isInputFocused:a.props.isInputFocused,containerRef:a.containerRef,monthShowsDuplicateDaysEnd:p,monthShowsDuplicateDaysStart:l})))}return e}})),mt(bt(a),\"renderYears\",(function(){if(!a.props.showTimeSelectOnly)return a.props.showYearPicker?de.default.createElement(\"div\",{className:\"react-datepicker__year--container\"},a.renderHeader(),de.default.createElement(qr,yt({onDayClick:a.handleDayClick,date:a.state.date},a.props))):void 0})),mt(bt(a),\"renderTimeSection\",(function(){if(a.props.showTimeSelect&&(a.state.monthContainer||a.props.showTimeSelectOnly))return de.default.createElement(Rr,{selected:a.props.selected,openToDate:a.props.openToDate,onChange:a.props.onTimeChange,timeClassName:a.props.timeClassName,format:a.props.timeFormat,includeTimes:a.props.includeTimes,intervals:a.props.timeIntervals,minTime:a.props.minTime,maxTime:a.props.maxTime,excludeTimes:a.props.excludeTimes,filterTime:a.props.filterTime,timeCaption:a.props.timeCaption,todayButton:a.props.todayButton,showMonthDropdown:a.props.showMonthDropdown,showMonthYearDropdown:a.props.showMonthYearDropdown,showYearDropdown:a.props.showYearDropdown,withPortal:a.props.withPortal,monthRef:a.state.monthContainer,injectTimes:a.props.injectTimes,locale:a.props.locale,showTimeSelectOnly:a.props.showTimeSelectOnly})})),mt(bt(a),\"renderInputTimeSection\",(function(){var e=new Date(a.props.selected),t=It(e)&&Boolean(a.props.selected)?\"\".concat(kr(e.getHours()),\":\").concat(kr(e.getMinutes())):\"\";if(a.props.showTimeInput)return de.default.createElement(Ar,{date:e,timeString:t,timeInputLabel:a.props.timeInputLabel,onChange:a.props.onTimeChange,customTimeInput:a.props.customTimeInput})})),a.containerRef=de.default.createRef(),a.state={date:a.getDateInView(),selectingDate:null,monthContainer:null},a}return ht(r,[{key:\"componentDidMount\",value:function(){var e=this;this.props.showTimeSelect&&(this.assignMonthContainer=void e.setState({monthContainer:e.monthContainer}))}},{key:\"componentDidUpdate\",value:function(e){this.props.preSelection&&!Ut(this.props.preSelection,e.preSelection)?this.setState({date:this.props.preSelection}):this.props.openToDate&&!Ut(this.props.openToDate,e.openToDate)&&this.setState({date:this.props.openToDate})}},{key:\"render\",value:function(){var e=this.props.container||Wr;return de.default.createElement(\"div\",{ref:this.containerRef},de.default.createElement(e,{className:ce.default(\"react-datepicker\",this.props.className,{\"react-datepicker--time-only\":this.props.showTimeSelectOnly}),showPopperArrow:this.props.showPopperArrow,arrowProps:this.props.arrowProps},this.renderPreviousButton(),this.renderNextButton(),this.renderMonths(),this.renderYears(),this.renderTodayButton(),this.renderTimeSection(),this.renderInputTimeSection(),this.props.children))}}],[{key:\"defaultProps\",get:function(){return{onDropdownFocus:function(){},monthsShown:1,monthSelectedIn:0,forceShowMonthNavigation:!1,timeCaption:\"Time\",previousYearButtonLabel:\"Previous Year\",nextYearButtonLabel:\"Next Year\",previousMonthButtonLabel:\"Previous Month\",nextMonthButtonLabel:\"Next Month\",customTimeInput:null,yearItemNumber:Ot}}}]),r}(de.default.Component),Hr=function(e){return!e.disabled&&-1!==e.tabIndex},Kr=function(e){wt(r,e);var t=St(r);function r(e){var a;return ut(this,r),mt(bt(a=t.call(this,e)),\"getTabChildren\",(function(){return Array.prototype.slice.call(a.tabLoopRef.current.querySelectorAll(\"[tabindex], a, button, input, select, textarea\"),1,-1).filter(Hr)})),mt(bt(a),\"handleFocusStart\",(function(e){var t=a.getTabChildren();t&&t.length>1&&t[t.length-1].focus()})),mt(bt(a),\"handleFocusEnd\",(function(e){var t=a.getTabChildren();t&&t.length>1&&t[0].focus()})),a.tabLoopRef=de.default.createRef(),a}return ht(r,[{key:\"render\",value:function(){return this.props.enableTabLoop?de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop\",ref:this.tabLoopRef},de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__start\",tabIndex:\"0\",onFocus:this.handleFocusStart}),this.props.children,de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__end\",tabIndex:\"0\",onFocus:this.handleFocusEnd})):this.props.children}}],[{key:\"defaultProps\",get:function(){return{enableTabLoop:!0}}}]),r}(de.default.Component),Qr=function(e){wt(r,e);var t=St(r);function r(e){var a;return ut(this,r),(a=t.call(this,e)).el=document.createElement(\"div\"),a}return ht(r,[{key:\"componentDidMount\",value:function(){this.portalRoot=document.getElementById(this.props.portalId),this.portalRoot||(this.portalRoot=document.createElement(\"div\"),this.portalRoot.setAttribute(\"id\",this.props.portalId),document.body.appendChild(this.portalRoot)),this.portalRoot.appendChild(this.el)}},{key:\"componentWillUnmount\",value:function(){this.portalRoot.removeChild(this.el)}},{key:\"render\",value:function(){return dt.default.createPortal(this.props.children,this.el)}}]),r}(de.default.Component),Vr=function(e){wt(r,e);var t=St(r);function r(){return ut(this,r),t.apply(this,arguments)}return ht(r,[{key:\"render\",value:function(){var e,t=this.props,r=t.className,a=t.wrapperClassName,n=t.hidePopper,o=t.popperComponent,s=t.popperModifiers,i=t.popperPlacement,p=t.popperProps,l=t.targetComponent,d=t.enableTabLoop,c=t.popperOnKeyDown,u=t.portalId;if(!n){var f=ce.default(\"react-datepicker-popper\",r);e=de.default.createElement(ie.Popper,yt({modifiers:s,placement:i},p),(function(e){var t=e.ref,r=e.style,a=e.placement,n=e.arrowProps;return de.default.createElement(Kr,{enableTabLoop:d},de.default.createElement(\"div\",{ref:t,style:r,className:f,\"data-placement\":a,onKeyDown:c},de.default.cloneElement(o,{arrowProps:n})))}))}this.props.popperContainer&&(e=de.default.createElement(this.props.popperContainer,{},e)),u&&!n&&(e=de.default.createElement(Qr,{portalId:u},e));var h=ce.default(\"react-datepicker-wrapper\",a);return de.default.createElement(ie.Manager,{className:\"react-datepicker-manager\"},de.default.createElement(ie.Reference,null,(function(e){var t=e.ref;return de.default.createElement(\"div\",{ref:t,className:h},l)})),e)}}],[{key:\"defaultProps\",get:function(){return{hidePopper:!0,popperModifiers:{preventOverflow:{enabled:!0,escapeWithReference:!0,boundariesElement:\"viewport\"}},popperProps:{},popperPlacement:\"bottom-start\"}}}]),r}(de.default.Component),Ur=\"react-datepicker-ignore-onclickoutside\",$r=lt.default(jr);var zr=\"Date input not valid.\",Gr=function(e){wt(r,e);var t=St(r);function r(e){var a;return ut(this,r),mt(bt(a=t.call(this,e)),\"getPreSelection\",(function(){return a.props.openToDate?a.props.openToDate:a.props.selectsEnd&&a.props.startDate?a.props.startDate:a.props.selectsStart&&a.props.endDate?a.props.endDate:xt()})),mt(bt(a),\"calcInitialState\",(function(){var e=a.getPreSelection(),t=yr(a.props),r=vr(a.props),n=t&&nt.default(e,Ve.default(t))?t:r&&at.default(e,Je.default(r))?r:e;return{open:a.props.startOpen||!1,preventFocus:!1,preSelection:a.props.selected?a.props.selected:n,highlightDates:Dr(a.props.highlightDates),focused:!1,shouldFocusDayInline:!1}})),mt(bt(a),\"clearPreventFocusTimeout\",(function(){a.preventFocusTimeout&&clearTimeout(a.preventFocusTimeout)})),mt(bt(a),\"setFocus\",(function(){a.input&&a.input.focus&&a.input.focus({preventScroll:!0})})),mt(bt(a),\"setBlur\",(function(){a.input&&a.input.blur&&a.input.blur(),a.cancelFocusInput()})),mt(bt(a),\"setOpen\",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];a.setState({open:e,preSelection:e&&a.state.open?a.state.preSelection:a.calcInitialState().preSelection,lastPreSelectChange:Xr},(function(){e||a.setState((function(e){return{focused:!!t&&e.focused}}),(function(){!t&&a.setBlur(),a.setState({inputValue:null})}))}))})),mt(bt(a),\"inputOk\",(function(){return ue.default(a.state.preSelection)})),mt(bt(a),\"isCalendarOpen\",(function(){return void 0===a.props.open?a.state.open&&!a.props.disabled&&!a.props.readOnly:a.props.open})),mt(bt(a),\"handleFocus\",(function(e){a.state.preventFocus||(a.props.onFocus(e),a.props.preventOpenOnFocus||a.props.readOnly||a.setOpen(!0)),a.setState({focused:!0})})),mt(bt(a),\"cancelFocusInput\",(function(){clearTimeout(a.inputFocusTimeout),a.inputFocusTimeout=null})),mt(bt(a),\"deferFocusInput\",(function(){a.cancelFocusInput(),a.inputFocusTimeout=setTimeout((function(){return a.setFocus()}),1)})),mt(bt(a),\"handleDropdownFocus\",(function(){a.cancelFocusInput()})),mt(bt(a),\"handleBlur\",(function(e){(!a.state.open||a.props.withPortal||a.props.showTimeInput)&&a.props.onBlur(e),a.setState({focused:!1})})),mt(bt(a),\"handleCalendarClickOutside\",(function(e){a.props.inline||a.setOpen(!1),a.props.onClickOutside(e),a.props.withPortal&&e.preventDefault()})),mt(bt(a),\"handleChange\",(function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var n=t[0];if(!a.props.onChangeRaw||(a.props.onChangeRaw.apply(bt(a),t),\"function\"==typeof n.isDefaultPrevented&&!n.isDefaultPrevented())){a.setState({inputValue:n.target.value,lastPreSelectChange:Jr});var o=Tt(n.target.value,a.props.dateFormat,a.props.locale,a.props.strictParsing);!o&&n.target.value||a.setSelected(o,n,!0)}})),mt(bt(a),\"handleSelect\",(function(e,t,r){a.setState({preventFocus:!0},(function(){return a.preventFocusTimeout=setTimeout((function(){return a.setState({preventFocus:!1})}),50),a.preventFocusTimeout})),a.props.onChangeRaw&&a.props.onChangeRaw(t),a.setSelected(e,t,!1,r),!a.props.shouldCloseOnSelect||a.props.showTimeSelect?a.setPreSelection(e):a.props.inline||a.setOpen(!1)})),mt(bt(a),\"setSelected\",(function(e,t,r,n){var o=e;if(null===o||!tr(o,a.props)){var s=a.props,i=s.onChange,p=s.selectsRange,l=s.startDate,d=s.endDate;if(!$t(a.props.selected,o)||a.props.allowSameDay||p)if(null!==o&&(!a.props.selected||r&&(a.props.showTimeSelect||a.props.showTimeSelectOnly||a.props.showTimeInput)||(o=Ft(o,{hour:Pe.default(a.props.selected),minute:Me.default(a.props.selected),second:_e.default(a.props.selected)})),a.props.inline||a.setState({preSelection:o}),a.props.focusSelectedMonth||a.setState({monthSelectedIn:n})),p){var c=l&&!d,u=l&&d;!l&&!d?i([o,null],t):c&&(nt.default(o,l)?i([o,null],t):i([l,o],t)),u&&i([o,null],t)}else i(o,t);r||(a.props.onSelect(o,t),a.setState({inputValue:null}))}})),mt(bt(a),\"setPreSelection\",(function(e){var t=void 0!==a.props.minDate,r=void 0!==a.props.maxDate,n=!0;if(e){var o=Ve.default(e);if(t&&r)n=zt(e,a.props.minDate,a.props.maxDate);else if(t){var s=Ve.default(a.props.minDate);n=at.default(e,s)||$t(o,s)}else if(r){var i=Je.default(a.props.maxDate);n=nt.default(e,i)||$t(o,i)}}n&&a.setState({preSelection:e})})),mt(bt(a),\"handleTimeChange\",(function(e){var t=Ft(a.props.selected?a.props.selected:a.getPreSelection(),{hour:Pe.default(e),minute:Me.default(e)});a.setState({preSelection:t}),a.props.onChange(t),a.props.shouldCloseOnSelect&&a.setOpen(!1),a.props.showTimeInput&&a.setOpen(!0),a.setState({inputValue:null})})),mt(bt(a),\"onInputClick\",(function(){a.props.disabled||a.props.readOnly||a.setOpen(!0),a.props.onInputClick()})),mt(bt(a),\"onInputKeyDown\",(function(e){a.props.onKeyDown(e);var t=e.key;if(a.state.open||a.props.inline||a.props.preventOpenOnFocus){if(a.state.open){if(\"ArrowDown\"===t||\"ArrowUp\"===t){e.preventDefault();var r=a.calendar.componentNode&&a.calendar.componentNode.querySelector('.react-datepicker__day[tabindex=\"0\"]');return void(r&&r.focus({preventScroll:!0}))}var n=xt(a.state.preSelection);\"Enter\"===t?(e.preventDefault(),a.inputOk()&&a.state.lastPreSelectChange===Xr?(a.handleSelect(n,e),!a.props.shouldCloseOnSelect&&a.setPreSelection(n)):a.setOpen(!1)):\"Escape\"===t&&(e.preventDefault(),a.setOpen(!1)),a.inputOk()||a.props.onInputError({code:1,msg:zr})}}else\"ArrowDown\"!==t&&\"ArrowUp\"!==t&&\"Enter\"!==t||a.onInputClick()})),mt(bt(a),\"onDayKeyDown\",(function(e){a.props.onKeyDown(e);var t=e.key,r=xt(a.state.preSelection);if(\"Enter\"===t)e.preventDefault(),a.handleSelect(r,e),!a.props.shouldCloseOnSelect&&a.setPreSelection(r);else if(\"Escape\"===t)e.preventDefault(),a.setOpen(!1),a.inputOk()||a.props.onInputError({code:1,msg:zr});else if(!a.props.disabledKeyboardNavigation){var n;switch(t){case\"ArrowLeft\":n=ge.default(r,1);break;case\"ArrowRight\":n=ve.default(r,1);break;case\"ArrowUp\":n=be.default(r,1);break;case\"ArrowDown\":n=De.default(r,1);break;case\"PageUp\":n=Ce.default(r,1);break;case\"PageDown\":n=we.default(r,1);break;case\"Home\":n=Se.default(r,1);break;case\"End\":n=ke.default(r,1)}if(!n)return void(a.props.onInputError&&a.props.onInputError({code:1,msg:zr}));if(e.preventDefault(),a.setState({lastPreSelectChange:Xr}),a.props.adjustDateOnChange&&a.setSelected(n),a.setPreSelection(n),a.props.inline){var o=Ye.default(r),s=Ye.default(n),i=Te.default(r),p=Te.default(n);o!==s||i!==p?a.setState({shouldFocusDayInline:!0}):a.setState({shouldFocusDayInline:!1})}}})),mt(bt(a),\"onPopperKeyDown\",(function(e){\"Escape\"===e.key&&(e.preventDefault(),a.setState({preventFocus:!0},(function(){a.setOpen(!1),setTimeout((function(){a.setFocus(),a.setState({preventFocus:!1})}))})))})),mt(bt(a),\"onClearClick\",(function(e){e&&e.preventDefault&&e.preventDefault(),a.props.onChange(null,e),a.setState({inputValue:null})})),mt(bt(a),\"clear\",(function(){a.onClearClick()})),mt(bt(a),\"onScroll\",(function(e){\"boolean\"==typeof a.props.closeOnScroll&&a.props.closeOnScroll?e.target!==document&&e.target!==document.documentElement&&e.target!==document.body||a.setOpen(!1):\"function\"==typeof a.props.closeOnScroll&&a.props.closeOnScroll(e)&&a.setOpen(!1)})),mt(bt(a),\"renderCalendar\",(function(){return a.props.inline||a.isCalendarOpen()?de.default.createElement($r,{ref:function(e){a.calendar=e},locale:a.props.locale,chooseDayAriaLabelPrefix:a.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:a.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:a.props.weekAriaLabelPrefix,adjustDateOnChange:a.props.adjustDateOnChange,setOpen:a.setOpen,shouldCloseOnSelect:a.props.shouldCloseOnSelect,dateFormat:a.props.dateFormatCalendar,useWeekdaysShort:a.props.useWeekdaysShort,formatWeekDay:a.props.formatWeekDay,dropdownMode:a.props.dropdownMode,selected:a.props.selected,preSelection:a.state.preSelection,onSelect:a.handleSelect,onWeekSelect:a.props.onWeekSelect,openToDate:a.props.openToDate,minDate:a.props.minDate,maxDate:a.props.maxDate,selectsStart:a.props.selectsStart,selectsEnd:a.props.selectsEnd,selectsRange:a.props.selectsRange,startDate:a.props.startDate,endDate:a.props.endDate,excludeDates:a.props.excludeDates,filterDate:a.props.filterDate,onClickOutside:a.handleCalendarClickOutside,formatWeekNumber:a.props.formatWeekNumber,highlightDates:a.state.highlightDates,includeDates:a.props.includeDates,includeTimes:a.props.includeTimes,injectTimes:a.props.injectTimes,inline:a.props.inline,shouldFocusDayInline:a.state.shouldFocusDayInline,peekNextMonth:a.props.peekNextMonth,showMonthDropdown:a.props.showMonthDropdown,showPreviousMonths:a.props.showPreviousMonths,useShortMonthInDropdown:a.props.useShortMonthInDropdown,showMonthYearDropdown:a.props.showMonthYearDropdown,showWeekNumbers:a.props.showWeekNumbers,showYearDropdown:a.props.showYearDropdown,withPortal:a.props.withPortal,forceShowMonthNavigation:a.props.forceShowMonthNavigation,showDisabledMonthNavigation:a.props.showDisabledMonthNavigation,scrollableYearDropdown:a.props.scrollableYearDropdown,scrollableMonthYearDropdown:a.props.scrollableMonthYearDropdown,todayButton:a.props.todayButton,weekLabel:a.props.weekLabel,outsideClickIgnoreClass:Ur,fixedHeight:a.props.fixedHeight,monthsShown:a.props.monthsShown,monthSelectedIn:a.state.monthSelectedIn,onDropdownFocus:a.handleDropdownFocus,onMonthChange:a.props.onMonthChange,onYearChange:a.props.onYearChange,dayClassName:a.props.dayClassName,weekDayClassName:a.props.weekDayClassName,monthClassName:a.props.monthClassName,timeClassName:a.props.timeClassName,showTimeSelect:a.props.showTimeSelect,showTimeSelectOnly:a.props.showTimeSelectOnly,onTimeChange:a.handleTimeChange,timeFormat:a.props.timeFormat,timeIntervals:a.props.timeIntervals,minTime:a.props.minTime,maxTime:a.props.maxTime,excludeTimes:a.props.excludeTimes,filterTime:a.props.filterTime,timeCaption:a.props.timeCaption,className:a.props.calendarClassName,container:a.props.calendarContainer,yearItemNumber:a.props.yearItemNumber,yearDropdownItemNumber:a.props.yearDropdownItemNumber,previousMonthButtonLabel:a.props.previousMonthButtonLabel,nextMonthButtonLabel:a.props.nextMonthButtonLabel,previousYearButtonLabel:a.props.previousYearButtonLabel,nextYearButtonLabel:a.props.nextYearButtonLabel,timeInputLabel:a.props.timeInputLabel,disabledKeyboardNavigation:a.props.disabledKeyboardNavigation,renderCustomHeader:a.props.renderCustomHeader,popperProps:a.props.popperProps,renderDayContents:a.props.renderDayContents,onDayMouseEnter:a.props.onDayMouseEnter,onMonthMouseLeave:a.props.onMonthMouseLeave,showTimeInput:a.props.showTimeInput,showMonthYearPicker:a.props.showMonthYearPicker,showFullMonthYearPicker:a.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:a.props.showTwoColumnMonthYearPicker,showFourColumnMonthYearPicker:a.props.showFourColumnMonthYearPicker,showYearPicker:a.props.showYearPicker,showQuarterYearPicker:a.props.showQuarterYearPicker,showPopperArrow:a.props.showPopperArrow,excludeScrollbar:a.props.excludeScrollbar,handleOnKeyDown:a.onDayKeyDown,isInputFocused:a.state.focused,customTimeInput:a.props.customTimeInput,setPreSelection:a.setPreSelection},a.props.children):null})),mt(bt(a),\"renderDateInput\",(function(){var e,t,r,n,o,s=ce.default(a.props.className,mt({},Ur,a.state.open)),i=a.props.customInput||de.default.createElement(\"input\",{type:\"text\"}),p=a.props.customInputRef||\"ref\",l=\"string\"==typeof a.props.value?a.props.value:\"string\"==typeof a.state.inputValue?a.state.inputValue:(t=a.props.selected,r=a.props,n=r.dateFormat,o=r.locale,t&&Lt(t,Array.isArray(n)?n[0]:n,o)||\"\");return de.default.cloneElement(i,(mt(e={},p,(function(e){a.input=e})),mt(e,\"value\",l),mt(e,\"onBlur\",a.handleBlur),mt(e,\"onChange\",a.handleChange),mt(e,\"onClick\",a.onInputClick),mt(e,\"onFocus\",a.handleFocus),mt(e,\"onKeyDown\",a.onInputKeyDown),mt(e,\"id\",a.props.id),mt(e,\"name\",a.props.name),mt(e,\"autoFocus\",a.props.autoFocus),mt(e,\"placeholder\",a.props.placeholderText),mt(e,\"disabled\",a.props.disabled),mt(e,\"autoComplete\",a.props.autoComplete),mt(e,\"className\",ce.default(i.props.className,s)),mt(e,\"title\",a.props.title),mt(e,\"readOnly\",a.props.readOnly),mt(e,\"required\",a.props.required),mt(e,\"tabIndex\",a.props.tabIndex),mt(e,\"aria-describedby\",a.props.ariaDescribedBy),mt(e,\"aria-invalid\",a.props.ariaInvalid),mt(e,\"aria-labelledby\",a.props.ariaLabelledBy),mt(e,\"aria-required\",a.props.ariaRequired),e))})),mt(bt(a),\"renderClearButton\",(function(){var e=a.props,t=e.isClearable,r=e.selected,n=e.clearButtonTitle,o=e.clearButtonClassName,s=e.ariaLabelClose,i=void 0===s?\"Close\":s;return t&&null!=r?de.default.createElement(\"button\",{type:\"button\",className:\"react-datepicker__close-icon \".concat(o),\"aria-label\":i,onClick:a.onClearClick,title:n,tabIndex:-1}):null})),a.state=a.calcInitialState(),a}return ht(r,[{key:\"componentDidMount\",value:function(){window.addEventListener(\"scroll\",this.onScroll,!0)}},{key:\"componentDidUpdate\",value:function(e,t){var r,a;e.inline&&(r=e.selected,a=this.props.selected,r&&a?Ye.default(r)!==Ye.default(a)||Te.default(r)!==Te.default(a):r!==a)&&this.setPreSelection(this.props.selected),void 0!==this.state.monthSelectedIn&&e.monthsShown!==this.props.monthsShown&&this.setState({monthSelectedIn:0}),e.highlightDates!==this.props.highlightDates&&this.setState({highlightDates:Dr(this.props.highlightDates)}),t.focused||$t(e.selected,this.props.selected)||this.setState({inputValue:null}),t.open!==this.state.open&&(!1===t.open&&!0===this.state.open&&this.props.onCalendarOpen(),!0===t.open&&!1===this.state.open&&this.props.onCalendarClose())}},{key:\"componentWillUnmount\",value:function(){this.clearPreventFocusTimeout(),window.removeEventListener(\"scroll\",this.onScroll,!0)}},{key:\"render\",value:function(){var e=this.renderCalendar();return this.props.inline&&!this.props.withPortal?e:this.props.withPortal?de.default.createElement(\"div\",null,this.props.inline?null:de.default.createElement(\"div\",{className:\"react-datepicker__input-container\"},this.renderDateInput(),this.renderClearButton()),this.state.open||this.props.inline?de.default.createElement(\"div\",{className:\"react-datepicker__portal\"},e):null):de.default.createElement(Vr,{className:this.props.popperClassName,wrapperClassName:this.props.wrapperClassName,hidePopper:!this.isCalendarOpen(),portalId:this.props.portalId,popperModifiers:this.props.popperModifiers,targetComponent:de.default.createElement(\"div\",{className:\"react-datepicker__input-container\"},this.renderDateInput(),this.renderClearButton()),popperContainer:this.props.popperContainer,popperComponent:e,popperPlacement:this.props.popperPlacement,popperProps:this.props.popperProps,popperOnKeyDown:this.onPopperKeyDown,enableTabLoop:this.props.enableTabLoop})}}],[{key:\"defaultProps\",get:function(){return{allowSameDay:!1,dateFormat:\"MM/dd/yyyy\",dateFormatCalendar:\"LLLL yyyy\",onChange:function(){},disabled:!1,disabledKeyboardNavigation:!1,dropdownMode:\"scroll\",onFocus:function(){},onBlur:function(){},onKeyDown:function(){},onInputClick:function(){},onSelect:function(){},onClickOutside:function(){},onMonthChange:function(){},onCalendarOpen:function(){},onCalendarClose:function(){},preventOpenOnFocus:!1,onYearChange:function(){},onInputError:function(){},monthsShown:1,readOnly:!1,withPortal:!1,shouldCloseOnSelect:!0,showTimeSelect:!1,showTimeInput:!1,showPreviousMonths:!1,showMonthYearPicker:!1,showFullMonthYearPicker:!1,showTwoColumnMonthYearPicker:!1,showFourColumnMonthYearPicker:!1,showYearPicker:!1,showQuarterYearPicker:!1,strictParsing:!1,timeIntervals:30,timeCaption:\"Time\",previousMonthButtonLabel:\"Previous Month\",nextMonthButtonLabel:\"Next Month\",previousYearButtonLabel:\"Previous Year\",nextYearButtonLabel:\"Next Year\",timeInputLabel:\"Time\",enableTabLoop:!0,yearItemNumber:Ot,renderDayContents:function(e){return e},focusSelectedMonth:!1,showPopperArrow:!0,excludeScrollbar:!0,customTimeInput:null}}}]),r}(de.default.Component),Jr=\"input\",Xr=\"navigate\";e.CalendarContainer=Wr,e.default=Gr,e.getDefaultLocale=Gt,e.registerLocale=function(e,t){var r=\"undefined\"!=typeof window?window:global;r.__localeData__||(r.__localeData__={}),r.__localeData__[e]=t},e.setDefaultLocale=function(e){(\"undefined\"!=typeof window?window:global).__localeId__=e},Object.defineProperty(e,\"__esModule\",{value:!0})}));\n","var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected;\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n /* eslint max-statements: [2, 50] */\n var i, key;\n if (typeof a !== typeof b) { return false; }\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if (aIsRegex || bIsRegex) {\n return a.source === b.source && flags(a) === flags(b);\n }\n\n if (isDate(a) && isDate(b)) {\n return getTime.call(a) === getTime.call(b);\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n if (typeof a !== typeof b) { return false; }\n\n try {\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n } catch (e) { // happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; }\n }\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) { return false; }\n }\n\n return true;\n}\n\nmodule.exports = deepEqual;\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n","module.exports = require('./src/normalizeWheel.js');\n","function deferred() {\n var def = {};\n def.promise = new Promise(function (resolve, reject) {\n def.resolve = resolve;\n def.reject = reject;\n });\n return def;\n}\nfunction arrayOfDeferred(length) {\n var arr = [];\n\n for (var i = 0; i < length; i++) {\n arr.push(deferred());\n }\n\n return arr;\n}\n\nexport default deferred;\nexport { arrayOfDeferred };\n","import { CHANNEL_END_TYPE, MULTICAST, MATCH, SAGA_ACTION, CANCEL, SELF_CANCELLATION, TERMINATE, TASK, TASK_CANCEL, IO } from '@redux-saga/symbols';\nexport { CANCEL, SAGA_LOCATION } from '@redux-saga/symbols';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport { string as string$1, array as array$1, stringableFunc, func, symbol as symbol$1, buffer, notUndef, promise, iterator, undef, object, channel as channel$1 } from '@redux-saga/is';\nimport { k as kTrue, e as expanding, c as check, o as once, r as remove, n as none, i as internalErr, T as TAKE, P as PUT, A as ALL, R as RACE, C as CALL, a as CPS, F as FORK, J as JOIN, b as CANCEL$1, S as SELECT, d as ACTION_CHANNEL, f as CANCELLED$1, g as FLUSH, G as GET_CONTEXT, h as SET_CONTEXT, j as getMetaInfo, l as createAllStyleChildCallbacks, m as createEmptyArray, p as assignWithSymbols, q as makeIterator, s as shouldComplete, t as noop, u as flatMap, v as getLocation, w as createSetContextWarning, x as asyncIteratorSymbol, y as shouldCancel, z as shouldTerminate, B as compose, D as logError, E as wrapSagaDispatch, H as identity } from './io-22ea0cf9.js';\nexport { I as buffers, K as detach } from './io-22ea0cf9.js';\nimport deferred from '@redux-saga/deferred';\nimport '@redux-saga/delay-p';\n\nvar queue = [];\n/**\n Variable to hold a counting semaphore\n - Incrementing adds a lock and puts the scheduler in a `suspended` state (if it's not\n already suspended)\n - Decrementing releases a lock. Zero locks puts the scheduler in a `released` state. This\n triggers flushing the queued tasks.\n**/\n\nvar semaphore = 0;\n/**\n Executes a task 'atomically'. Tasks scheduled during this execution will be queued\n and flushed after this task has finished (assuming the scheduler endup in a released\n state).\n**/\n\nfunction exec(task) {\n try {\n suspend();\n task();\n } finally {\n release();\n }\n}\n/**\n Executes or queues a task depending on the state of the scheduler (`suspended` or `released`)\n**/\n\n\nfunction asap(task) {\n queue.push(task);\n\n if (!semaphore) {\n suspend();\n flush();\n }\n}\n/**\n * Puts the scheduler in a `suspended` state and executes a task immediately.\n */\n\nfunction immediately(task) {\n try {\n suspend();\n return task();\n } finally {\n flush();\n }\n}\n/**\n Puts the scheduler in a `suspended` state. Scheduled tasks will be queued until the\n scheduler is released.\n**/\n\nfunction suspend() {\n semaphore++;\n}\n/**\n Puts the scheduler in a `released` state.\n**/\n\n\nfunction release() {\n semaphore--;\n}\n/**\n Releases the current lock. Executes all queued tasks if the scheduler is in the released state.\n**/\n\n\nfunction flush() {\n release();\n var task;\n\n while (!semaphore && (task = queue.shift()) !== undefined) {\n exec(task);\n }\n}\n\nvar array = function array(patterns) {\n return function (input) {\n return patterns.some(function (p) {\n return matcher(p)(input);\n });\n };\n};\nvar predicate = function predicate(_predicate) {\n return function (input) {\n return _predicate(input);\n };\n};\nvar string = function string(pattern) {\n return function (input) {\n return input.type === String(pattern);\n };\n};\nvar symbol = function symbol(pattern) {\n return function (input) {\n return input.type === pattern;\n };\n};\nvar wildcard = function wildcard() {\n return kTrue;\n};\nfunction matcher(pattern) {\n // prettier-ignore\n var matcherCreator = pattern === '*' ? wildcard : string$1(pattern) ? string : array$1(pattern) ? array : stringableFunc(pattern) ? string : func(pattern) ? predicate : symbol$1(pattern) ? symbol : null;\n\n if (matcherCreator === null) {\n throw new Error(\"invalid pattern: \" + pattern);\n }\n\n return matcherCreator(pattern);\n}\n\nvar END = {\n type: CHANNEL_END_TYPE\n};\nvar isEnd = function isEnd(a) {\n return a && a.type === CHANNEL_END_TYPE;\n};\nvar CLOSED_CHANNEL_WITH_TAKERS = 'Cannot have a closed channel with pending takers';\nvar INVALID_BUFFER = 'invalid buffer passed to channel factory function';\nvar UNDEFINED_INPUT_ERROR = \"Saga or channel was provided with an undefined action\\nHints:\\n - check that your Action Creator returns a non-undefined value\\n - if the Saga was started using runSaga, check that your subscribe source provides the action to its listeners\";\nfunction channel(buffer$1) {\n if (buffer$1 === void 0) {\n buffer$1 = expanding();\n }\n\n var closed = false;\n var takers = [];\n\n if (process.env.NODE_ENV !== 'production') {\n check(buffer$1, buffer, INVALID_BUFFER);\n }\n\n function checkForbiddenStates() {\n if (closed && takers.length) {\n throw internalErr(CLOSED_CHANNEL_WITH_TAKERS);\n }\n\n if (takers.length && !buffer$1.isEmpty()) {\n throw internalErr('Cannot have pending takers with non empty buffer');\n }\n }\n\n function put(input) {\n if (process.env.NODE_ENV !== 'production') {\n checkForbiddenStates();\n check(input, notUndef, UNDEFINED_INPUT_ERROR);\n }\n\n if (closed) {\n return;\n }\n\n if (takers.length === 0) {\n return buffer$1.put(input);\n }\n\n var cb = takers.shift();\n cb(input);\n }\n\n function take(cb) {\n if (process.env.NODE_ENV !== 'production') {\n checkForbiddenStates();\n check(cb, func, \"channel.take's callback must be a function\");\n }\n\n if (closed && buffer$1.isEmpty()) {\n cb(END);\n } else if (!buffer$1.isEmpty()) {\n cb(buffer$1.take());\n } else {\n takers.push(cb);\n\n cb.cancel = function () {\n remove(takers, cb);\n };\n }\n }\n\n function flush(cb) {\n if (process.env.NODE_ENV !== 'production') {\n checkForbiddenStates();\n check(cb, func, \"channel.flush' callback must be a function\");\n }\n\n if (closed && buffer$1.isEmpty()) {\n cb(END);\n return;\n }\n\n cb(buffer$1.flush());\n }\n\n function close() {\n if (process.env.NODE_ENV !== 'production') {\n checkForbiddenStates();\n }\n\n if (closed) {\n return;\n }\n\n closed = true;\n var arr = takers;\n takers = [];\n\n for (var i = 0, len = arr.length; i < len; i++) {\n var taker = arr[i];\n taker(END);\n }\n }\n\n return {\n take: take,\n put: put,\n flush: flush,\n close: close\n };\n}\nfunction eventChannel(subscribe, buffer) {\n if (buffer === void 0) {\n buffer = none();\n }\n\n var closed = false;\n var unsubscribe;\n var chan = channel(buffer);\n\n var close = function close() {\n if (closed) {\n return;\n }\n\n closed = true;\n\n if (func(unsubscribe)) {\n unsubscribe();\n }\n\n chan.close();\n };\n\n unsubscribe = subscribe(function (input) {\n if (isEnd(input)) {\n close();\n return;\n }\n\n chan.put(input);\n });\n\n if (process.env.NODE_ENV !== 'production') {\n check(unsubscribe, func, 'in eventChannel: subscribe should return a function to unsubscribe');\n }\n\n unsubscribe = once(unsubscribe);\n\n if (closed) {\n unsubscribe();\n }\n\n return {\n take: chan.take,\n flush: chan.flush,\n close: close\n };\n}\nfunction multicastChannel() {\n var _ref;\n\n var closed = false;\n var currentTakers = [];\n var nextTakers = currentTakers;\n\n function checkForbiddenStates() {\n if (closed && nextTakers.length) {\n throw internalErr(CLOSED_CHANNEL_WITH_TAKERS);\n }\n }\n\n var ensureCanMutateNextTakers = function ensureCanMutateNextTakers() {\n if (nextTakers !== currentTakers) {\n return;\n }\n\n nextTakers = currentTakers.slice();\n };\n\n var close = function close() {\n if (process.env.NODE_ENV !== 'production') {\n checkForbiddenStates();\n }\n\n closed = true;\n var takers = currentTakers = nextTakers;\n nextTakers = [];\n takers.forEach(function (taker) {\n taker(END);\n });\n };\n\n return _ref = {}, _ref[MULTICAST] = true, _ref.put = function put(input) {\n if (process.env.NODE_ENV !== 'production') {\n checkForbiddenStates();\n check(input, notUndef, UNDEFINED_INPUT_ERROR);\n }\n\n if (closed) {\n return;\n }\n\n if (isEnd(input)) {\n close();\n return;\n }\n\n var takers = currentTakers = nextTakers;\n\n for (var i = 0, len = takers.length; i < len; i++) {\n var taker = takers[i];\n\n if (taker[MATCH](input)) {\n taker.cancel();\n taker(input);\n }\n }\n }, _ref.take = function take(cb, matcher) {\n if (matcher === void 0) {\n matcher = wildcard;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n checkForbiddenStates();\n }\n\n if (closed) {\n cb(END);\n return;\n }\n\n cb[MATCH] = matcher;\n ensureCanMutateNextTakers();\n nextTakers.push(cb);\n cb.cancel = once(function () {\n ensureCanMutateNextTakers();\n remove(nextTakers, cb);\n });\n }, _ref.close = close, _ref;\n}\nfunction stdChannel() {\n var chan = multicastChannel();\n var put = chan.put;\n\n chan.put = function (input) {\n if (input[SAGA_ACTION]) {\n put(input);\n return;\n }\n\n asap(function () {\n put(input);\n });\n };\n\n return chan;\n}\n\nvar RUNNING = 0;\nvar CANCELLED = 1;\nvar ABORTED = 2;\nvar DONE = 3;\n\nfunction resolvePromise(promise, cb) {\n var cancelPromise = promise[CANCEL];\n\n if (func(cancelPromise)) {\n cb.cancel = cancelPromise;\n }\n\n promise.then(cb, function (error) {\n cb(error, true);\n });\n}\n\nvar current = 0;\nvar nextSagaId = (function () {\n return ++current;\n});\n\nvar _effectRunnerMap;\n\nfunction getIteratorMetaInfo(iterator, fn) {\n if (iterator.isSagaIterator) {\n return {\n name: iterator.meta.name\n };\n }\n\n return getMetaInfo(fn);\n}\n\nfunction createTaskIterator(_ref) {\n var context = _ref.context,\n fn = _ref.fn,\n args = _ref.args;\n\n // catch synchronous failures; see #152 and #441\n try {\n var result = fn.apply(context, args); // i.e. a generator function returns an iterator\n\n if (iterator(result)) {\n return result;\n }\n\n var resolved = false;\n\n var next = function next(arg) {\n if (!resolved) {\n resolved = true; // Only promises returned from fork will be interpreted. See #1573\n\n return {\n value: result,\n done: !promise(result)\n };\n } else {\n return {\n value: arg,\n done: true\n };\n }\n };\n\n return makeIterator(next);\n } catch (err) {\n // do not bubble up synchronous failures for detached forks\n // instead create a failed task. See #152 and #441\n return makeIterator(function () {\n throw err;\n });\n }\n}\n\nfunction runPutEffect(env, _ref2, cb) {\n var channel = _ref2.channel,\n action = _ref2.action,\n resolve = _ref2.resolve;\n\n /**\n Schedule the put in case another saga is holding a lock.\n The put will be executed atomically. ie nested puts will execute after\n this put has terminated.\n **/\n asap(function () {\n var result;\n\n try {\n result = (channel ? channel.put : env.dispatch)(action);\n } catch (error) {\n cb(error, true);\n return;\n }\n\n if (resolve && promise(result)) {\n resolvePromise(result, cb);\n } else {\n cb(result);\n }\n }); // Put effects are non cancellables\n}\n\nfunction runTakeEffect(env, _ref3, cb) {\n var _ref3$channel = _ref3.channel,\n channel = _ref3$channel === void 0 ? env.channel : _ref3$channel,\n pattern = _ref3.pattern,\n maybe = _ref3.maybe;\n\n var takeCb = function takeCb(input) {\n if (input instanceof Error) {\n cb(input, true);\n return;\n }\n\n if (isEnd(input) && !maybe) {\n cb(TERMINATE);\n return;\n }\n\n cb(input);\n };\n\n try {\n channel.take(takeCb, notUndef(pattern) ? matcher(pattern) : null);\n } catch (err) {\n cb(err, true);\n return;\n }\n\n cb.cancel = takeCb.cancel;\n}\n\nfunction runCallEffect(env, _ref4, cb, _ref5) {\n var context = _ref4.context,\n fn = _ref4.fn,\n args = _ref4.args;\n var task = _ref5.task;\n\n // catch synchronous failures; see #152\n try {\n var result = fn.apply(context, args);\n\n if (promise(result)) {\n resolvePromise(result, cb);\n return;\n }\n\n if (iterator(result)) {\n // resolve iterator\n proc(env, result, task.context, current, getMetaInfo(fn),\n /* isRoot */\n false, cb);\n return;\n }\n\n cb(result);\n } catch (error) {\n cb(error, true);\n }\n}\n\nfunction runCPSEffect(env, _ref6, cb) {\n var context = _ref6.context,\n fn = _ref6.fn,\n args = _ref6.args;\n\n // CPS (ie node style functions) can define their own cancellation logic\n // by setting cancel field on the cb\n // catch synchronous failures; see #152\n try {\n var cpsCb = function cpsCb(err, res) {\n if (undef(err)) {\n cb(res);\n } else {\n cb(err, true);\n }\n };\n\n fn.apply(context, args.concat(cpsCb));\n\n if (cpsCb.cancel) {\n cb.cancel = cpsCb.cancel;\n }\n } catch (error) {\n cb(error, true);\n }\n}\n\nfunction runForkEffect(env, _ref7, cb, _ref8) {\n var context = _ref7.context,\n fn = _ref7.fn,\n args = _ref7.args,\n detached = _ref7.detached;\n var parent = _ref8.task;\n var taskIterator = createTaskIterator({\n context: context,\n fn: fn,\n args: args\n });\n var meta = getIteratorMetaInfo(taskIterator, fn);\n immediately(function () {\n var child = proc(env, taskIterator, parent.context, current, meta, detached, undefined);\n\n if (detached) {\n cb(child);\n } else {\n if (child.isRunning()) {\n parent.queue.addTask(child);\n cb(child);\n } else if (child.isAborted()) {\n parent.queue.abort(child.error());\n } else {\n cb(child);\n }\n }\n }); // Fork effects are non cancellables\n}\n\nfunction runJoinEffect(env, taskOrTasks, cb, _ref9) {\n var task = _ref9.task;\n\n var joinSingleTask = function joinSingleTask(taskToJoin, cb) {\n if (taskToJoin.isRunning()) {\n var joiner = {\n task: task,\n cb: cb\n };\n\n cb.cancel = function () {\n if (taskToJoin.isRunning()) remove(taskToJoin.joiners, joiner);\n };\n\n taskToJoin.joiners.push(joiner);\n } else {\n if (taskToJoin.isAborted()) {\n cb(taskToJoin.error(), true);\n } else {\n cb(taskToJoin.result());\n }\n }\n };\n\n if (array$1(taskOrTasks)) {\n if (taskOrTasks.length === 0) {\n cb([]);\n return;\n }\n\n var childCallbacks = createAllStyleChildCallbacks(taskOrTasks, cb);\n taskOrTasks.forEach(function (t, i) {\n joinSingleTask(t, childCallbacks[i]);\n });\n } else {\n joinSingleTask(taskOrTasks, cb);\n }\n}\n\nfunction cancelSingleTask(taskToCancel) {\n if (taskToCancel.isRunning()) {\n taskToCancel.cancel();\n }\n}\n\nfunction runCancelEffect(env, taskOrTasks, cb, _ref10) {\n var task = _ref10.task;\n\n if (taskOrTasks === SELF_CANCELLATION) {\n cancelSingleTask(task);\n } else if (array$1(taskOrTasks)) {\n taskOrTasks.forEach(cancelSingleTask);\n } else {\n cancelSingleTask(taskOrTasks);\n }\n\n cb(); // cancel effects are non cancellables\n}\n\nfunction runAllEffect(env, effects, cb, _ref11) {\n var digestEffect = _ref11.digestEffect;\n var effectId = current;\n var keys = Object.keys(effects);\n\n if (keys.length === 0) {\n cb(array$1(effects) ? [] : {});\n return;\n }\n\n var childCallbacks = createAllStyleChildCallbacks(effects, cb);\n keys.forEach(function (key) {\n digestEffect(effects[key], effectId, childCallbacks[key], key);\n });\n}\n\nfunction runRaceEffect(env, effects, cb, _ref12) {\n var digestEffect = _ref12.digestEffect;\n var effectId = current;\n var keys = Object.keys(effects);\n var response = array$1(effects) ? createEmptyArray(keys.length) : {};\n var childCbs = {};\n var completed = false;\n keys.forEach(function (key) {\n var chCbAtKey = function chCbAtKey(res, isErr) {\n if (completed) {\n return;\n }\n\n if (isErr || shouldComplete(res)) {\n // Race Auto cancellation\n cb.cancel();\n cb(res, isErr);\n } else {\n cb.cancel();\n completed = true;\n response[key] = res;\n cb(response);\n }\n };\n\n chCbAtKey.cancel = noop;\n childCbs[key] = chCbAtKey;\n });\n\n cb.cancel = function () {\n // prevents unnecessary cancellation\n if (!completed) {\n completed = true;\n keys.forEach(function (key) {\n return childCbs[key].cancel();\n });\n }\n };\n\n keys.forEach(function (key) {\n if (completed) {\n return;\n }\n\n digestEffect(effects[key], effectId, childCbs[key], key);\n });\n}\n\nfunction runSelectEffect(env, _ref13, cb) {\n var selector = _ref13.selector,\n args = _ref13.args;\n\n try {\n var state = selector.apply(void 0, [env.getState()].concat(args));\n cb(state);\n } catch (error) {\n cb(error, true);\n }\n}\n\nfunction runChannelEffect(env, _ref14, cb) {\n var pattern = _ref14.pattern,\n buffer = _ref14.buffer;\n var chan = channel(buffer);\n var match = matcher(pattern);\n\n var taker = function taker(action) {\n if (!isEnd(action)) {\n env.channel.take(taker, match);\n }\n\n chan.put(action);\n };\n\n var close = chan.close;\n\n chan.close = function () {\n taker.cancel();\n close();\n };\n\n env.channel.take(taker, match);\n cb(chan);\n}\n\nfunction runCancelledEffect(env, data, cb, _ref15) {\n var task = _ref15.task;\n cb(task.isCancelled());\n}\n\nfunction runFlushEffect(env, channel, cb) {\n channel.flush(cb);\n}\n\nfunction runGetContextEffect(env, prop, cb, _ref16) {\n var task = _ref16.task;\n cb(task.context[prop]);\n}\n\nfunction runSetContextEffect(env, props, cb, _ref17) {\n var task = _ref17.task;\n assignWithSymbols(task.context, props);\n cb();\n}\n\nvar effectRunnerMap = (_effectRunnerMap = {}, _effectRunnerMap[TAKE] = runTakeEffect, _effectRunnerMap[PUT] = runPutEffect, _effectRunnerMap[ALL] = runAllEffect, _effectRunnerMap[RACE] = runRaceEffect, _effectRunnerMap[CALL] = runCallEffect, _effectRunnerMap[CPS] = runCPSEffect, _effectRunnerMap[FORK] = runForkEffect, _effectRunnerMap[JOIN] = runJoinEffect, _effectRunnerMap[CANCEL$1] = runCancelEffect, _effectRunnerMap[SELECT] = runSelectEffect, _effectRunnerMap[ACTION_CHANNEL] = runChannelEffect, _effectRunnerMap[CANCELLED$1] = runCancelledEffect, _effectRunnerMap[FLUSH] = runFlushEffect, _effectRunnerMap[GET_CONTEXT] = runGetContextEffect, _effectRunnerMap[SET_CONTEXT] = runSetContextEffect, _effectRunnerMap);\n\n/**\n Used to track a parent task and its forks\n In the fork model, forked tasks are attached by default to their parent\n We model this using the concept of Parent task && main Task\n main task is the main flow of the current Generator, the parent tasks is the\n aggregation of the main tasks + all its forked tasks.\n Thus the whole model represents an execution tree with multiple branches (vs the\n linear execution tree in sequential (non parallel) programming)\n\n A parent tasks has the following semantics\n - It completes if all its forks either complete or all cancelled\n - If it's cancelled, all forks are cancelled as well\n - It aborts if any uncaught error bubbles up from forks\n - If it completes, the return value is the one returned by the main task\n **/\n\nfunction forkQueue(mainTask, onAbort, cont) {\n var tasks = [];\n var result;\n var completed = false;\n addTask(mainTask);\n\n var getTasks = function getTasks() {\n return tasks;\n };\n\n function abort(err) {\n onAbort();\n cancelAll();\n cont(err, true);\n }\n\n function addTask(task) {\n tasks.push(task);\n\n task.cont = function (res, isErr) {\n if (completed) {\n return;\n }\n\n remove(tasks, task);\n task.cont = noop;\n\n if (isErr) {\n abort(res);\n } else {\n if (task === mainTask) {\n result = res;\n }\n\n if (!tasks.length) {\n completed = true;\n cont(result);\n }\n }\n };\n }\n\n function cancelAll() {\n if (completed) {\n return;\n }\n\n completed = true;\n tasks.forEach(function (t) {\n t.cont = noop;\n t.cancel();\n });\n tasks = [];\n }\n\n return {\n addTask: addTask,\n cancelAll: cancelAll,\n abort: abort,\n getTasks: getTasks\n };\n}\n\n// there can be only a single saga error created at any given moment\n\nfunction formatLocation(fileName, lineNumber) {\n return fileName + \"?\" + lineNumber;\n}\n\nfunction effectLocationAsString(effect) {\n var location = getLocation(effect);\n\n if (location) {\n var code = location.code,\n fileName = location.fileName,\n lineNumber = location.lineNumber;\n var source = code + \" \" + formatLocation(fileName, lineNumber);\n return source;\n }\n\n return '';\n}\n\nfunction sagaLocationAsString(sagaMeta) {\n var name = sagaMeta.name,\n location = sagaMeta.location;\n\n if (location) {\n return name + \" \" + formatLocation(location.fileName, location.lineNumber);\n }\n\n return name;\n}\n\nfunction cancelledTasksAsString(sagaStack) {\n var cancelledTasks = flatMap(function (i) {\n return i.cancelledTasks;\n }, sagaStack);\n\n if (!cancelledTasks.length) {\n return '';\n }\n\n return ['Tasks cancelled due to error:'].concat(cancelledTasks).join('\\n');\n}\n\nvar crashedEffect = null;\nvar sagaStack = [];\nvar addSagaFrame = function addSagaFrame(frame) {\n frame.crashedEffect = crashedEffect;\n sagaStack.push(frame);\n};\nvar clear = function clear() {\n crashedEffect = null;\n sagaStack.length = 0;\n}; // this sets crashed effect for the soon-to-be-reported saga frame\n// this slightly streatches the singleton nature of this module into wrong direction\n// as it's even less obvious what's the data flow here, but it is what it is for now\n\nvar setCrashedEffect = function setCrashedEffect(effect) {\n crashedEffect = effect;\n};\n/**\n @returns {string}\n\n @example\n The above error occurred in task errorInPutSaga {pathToFile}\n when executing effect put({type: 'REDUCER_ACTION_ERROR_IN_PUT'}) {pathToFile}\n created by fetchSaga {pathToFile}\n created by rootSaga {pathToFile}\n*/\n\nvar toString = function toString() {\n var firstSaga = sagaStack[0],\n otherSagas = sagaStack.slice(1);\n var crashedEffectLocation = firstSaga.crashedEffect ? effectLocationAsString(firstSaga.crashedEffect) : null;\n var errorMessage = \"The above error occurred in task \" + sagaLocationAsString(firstSaga.meta) + (crashedEffectLocation ? \" \\n when executing effect \" + crashedEffectLocation : '');\n return [errorMessage].concat(otherSagas.map(function (s) {\n return \" created by \" + sagaLocationAsString(s.meta);\n }), [cancelledTasksAsString(sagaStack)]).join('\\n');\n};\n\nfunction newTask(env, mainTask, parentContext, parentEffectId, meta, isRoot, cont) {\n var _task;\n\n if (cont === void 0) {\n cont = noop;\n }\n\n var status = RUNNING;\n var taskResult;\n var taskError;\n var deferredEnd = null;\n var cancelledDueToErrorTasks = [];\n var context = Object.create(parentContext);\n var queue = forkQueue(mainTask, function onAbort() {\n cancelledDueToErrorTasks.push.apply(cancelledDueToErrorTasks, queue.getTasks().map(function (t) {\n return t.meta.name;\n }));\n }, end);\n /**\n This may be called by a parent generator to trigger/propagate cancellation\n cancel all pending tasks (including the main task), then end the current task.\n Cancellation propagates down to the whole execution tree held by this Parent task\n It's also propagated to all joiners of this task and their execution tree/joiners\n Cancellation is noop for terminated/Cancelled tasks tasks\n **/\n\n function cancel() {\n if (status === RUNNING) {\n // Setting status to CANCELLED does not necessarily mean that the task/iterators are stopped\n // effects in the iterator's finally block will still be executed\n status = CANCELLED;\n queue.cancelAll(); // Ending with a TASK_CANCEL will propagate the Cancellation to all joiners\n\n end(TASK_CANCEL, false);\n }\n }\n\n function end(result, isErr) {\n if (!isErr) {\n // The status here may be RUNNING or CANCELLED\n // If the status is CANCELLED, then we do not need to change it here\n if (result === TASK_CANCEL) {\n status = CANCELLED;\n } else if (status !== CANCELLED) {\n status = DONE;\n }\n\n taskResult = result;\n deferredEnd && deferredEnd.resolve(result);\n } else {\n status = ABORTED;\n addSagaFrame({\n meta: meta,\n cancelledTasks: cancelledDueToErrorTasks\n });\n\n if (task.isRoot) {\n var sagaStack = toString(); // we've dumped the saga stack to string and are passing it to user's code\n // we know that it won't be needed anymore and we need to clear it\n\n clear();\n env.onError(result, {\n sagaStack: sagaStack\n });\n }\n\n taskError = result;\n deferredEnd && deferredEnd.reject(result);\n }\n\n task.cont(result, isErr);\n task.joiners.forEach(function (joiner) {\n joiner.cb(result, isErr);\n });\n task.joiners = null;\n }\n\n function setContext(props) {\n if (process.env.NODE_ENV !== 'production') {\n check(props, object, createSetContextWarning('task', props));\n }\n\n assignWithSymbols(context, props);\n }\n\n function toPromise() {\n if (deferredEnd) {\n return deferredEnd.promise;\n }\n\n deferredEnd = deferred();\n\n if (status === ABORTED) {\n deferredEnd.reject(taskError);\n } else if (status !== RUNNING) {\n deferredEnd.resolve(taskResult);\n }\n\n return deferredEnd.promise;\n }\n\n var task = (_task = {}, _task[TASK] = true, _task.id = parentEffectId, _task.meta = meta, _task.isRoot = isRoot, _task.context = context, _task.joiners = [], _task.queue = queue, _task.cancel = cancel, _task.cont = cont, _task.end = end, _task.setContext = setContext, _task.toPromise = toPromise, _task.isRunning = function isRunning() {\n return status === RUNNING;\n }, _task.isCancelled = function isCancelled() {\n return status === CANCELLED || status === RUNNING && mainTask.status === CANCELLED;\n }, _task.isAborted = function isAborted() {\n return status === ABORTED;\n }, _task.result = function result() {\n return taskResult;\n }, _task.error = function error() {\n return taskError;\n }, _task);\n return task;\n}\n\nfunction proc(env, iterator$1, parentContext, parentEffectId, meta, isRoot, cont) {\n if (process.env.NODE_ENV !== 'production' && iterator$1[asyncIteratorSymbol]) {\n throw new Error(\"redux-saga doesn't support async generators, please use only regular ones\");\n }\n\n var finalRunEffect = env.finalizeRunEffect(runEffect);\n /**\n Tracks the current effect cancellation\n Each time the generator progresses. calling runEffect will set a new value\n on it. It allows propagating cancellation to child effects\n **/\n\n next.cancel = noop;\n /** Creates a main task to track the main flow */\n\n var mainTask = {\n meta: meta,\n cancel: cancelMain,\n status: RUNNING\n };\n /**\n Creates a new task descriptor for this generator.\n A task is the aggregation of it's mainTask and all it's forked tasks.\n **/\n\n var task = newTask(env, mainTask, parentContext, parentEffectId, meta, isRoot, cont);\n var executingContext = {\n task: task,\n digestEffect: digestEffect\n };\n /**\n cancellation of the main task. We'll simply resume the Generator with a TASK_CANCEL\n **/\n\n function cancelMain() {\n if (mainTask.status === RUNNING) {\n mainTask.status = CANCELLED;\n next(TASK_CANCEL);\n }\n }\n /**\n attaches cancellation logic to this task's continuation\n this will permit cancellation to propagate down the call chain\n **/\n\n\n if (cont) {\n cont.cancel = task.cancel;\n } // kicks up the generator\n\n\n next(); // then return the task descriptor to the caller\n\n return task;\n /**\n * This is the generator driver\n * It's a recursive async/continuation function which calls itself\n * until the generator terminates or throws\n * @param {internal commands(TASK_CANCEL | TERMINATE) | any} arg - value, generator will be resumed with.\n * @param {boolean} isErr - the flag shows if effect finished with an error\n *\n * receives either (command | effect result, false) or (any thrown thing, true)\n */\n\n function next(arg, isErr) {\n try {\n var result;\n\n if (isErr) {\n result = iterator$1.throw(arg); // user handled the error, we can clear bookkept values\n\n clear();\n } else if (shouldCancel(arg)) {\n /**\n getting TASK_CANCEL automatically cancels the main task\n We can get this value here\n - By cancelling the parent task manually\n - By joining a Cancelled task\n **/\n mainTask.status = CANCELLED;\n /**\n Cancels the current effect; this will propagate the cancellation down to any called tasks\n **/\n\n next.cancel();\n /**\n If this Generator has a `return` method then invokes it\n This will jump to the finally block\n **/\n\n result = func(iterator$1.return) ? iterator$1.return(TASK_CANCEL) : {\n done: true,\n value: TASK_CANCEL\n };\n } else if (shouldTerminate(arg)) {\n // We get TERMINATE flag, i.e. by taking from a channel that ended using `take` (and not `takem` used to trap End of channels)\n result = func(iterator$1.return) ? iterator$1.return() : {\n done: true\n };\n } else {\n result = iterator$1.next(arg);\n }\n\n if (!result.done) {\n digestEffect(result.value, parentEffectId, next);\n } else {\n /**\n This Generator has ended, terminate the main task and notify the fork queue\n **/\n if (mainTask.status !== CANCELLED) {\n mainTask.status = DONE;\n }\n\n mainTask.cont(result.value);\n }\n } catch (error) {\n if (mainTask.status === CANCELLED) {\n throw error;\n }\n\n mainTask.status = ABORTED;\n mainTask.cont(error, true);\n }\n }\n\n function runEffect(effect, effectId, currCb) {\n /**\n each effect runner must attach its own logic of cancellation to the provided callback\n it allows this generator to propagate cancellation downward.\n ATTENTION! effect runners must setup the cancel logic by setting cb.cancel = [cancelMethod]\n And the setup must occur before calling the callback\n This is a sort of inversion of control: called async functions are responsible\n of completing the flow by calling the provided continuation; while caller functions\n are responsible for aborting the current flow by calling the attached cancel function\n Library users can attach their own cancellation logic to promises by defining a\n promise[CANCEL] method in their returned promises\n ATTENTION! calling cancel must have no effect on an already completed or cancelled effect\n **/\n if (promise(effect)) {\n resolvePromise(effect, currCb);\n } else if (iterator(effect)) {\n // resolve iterator\n proc(env, effect, task.context, effectId, meta,\n /* isRoot */\n false, currCb);\n } else if (effect && effect[IO]) {\n var effectRunner = effectRunnerMap[effect.type];\n effectRunner(env, effect.payload, currCb, executingContext);\n } else {\n // anything else returned as is\n currCb(effect);\n }\n }\n\n function digestEffect(effect, parentEffectId, cb, label) {\n if (label === void 0) {\n label = '';\n }\n\n var effectId = nextSagaId();\n env.sagaMonitor && env.sagaMonitor.effectTriggered({\n effectId: effectId,\n parentEffectId: parentEffectId,\n label: label,\n effect: effect\n });\n /**\n completion callback and cancel callback are mutually exclusive\n We can't cancel an already completed effect\n And We can't complete an already cancelled effectId\n **/\n\n var effectSettled; // Completion callback passed to the appropriate effect runner\n\n function currCb(res, isErr) {\n if (effectSettled) {\n return;\n }\n\n effectSettled = true;\n cb.cancel = noop; // defensive measure\n\n if (env.sagaMonitor) {\n if (isErr) {\n env.sagaMonitor.effectRejected(effectId, res);\n } else {\n env.sagaMonitor.effectResolved(effectId, res);\n }\n }\n\n if (isErr) {\n setCrashedEffect(effect);\n }\n\n cb(res, isErr);\n } // tracks down the current cancel\n\n\n currCb.cancel = noop; // setup cancellation logic on the parent cb\n\n cb.cancel = function () {\n // prevents cancelling an already completed effect\n if (effectSettled) {\n return;\n }\n\n effectSettled = true;\n currCb.cancel(); // propagates cancel downward\n\n currCb.cancel = noop; // defensive measure\n\n env.sagaMonitor && env.sagaMonitor.effectCancelled(effectId);\n };\n\n finalRunEffect(effect, effectId, currCb);\n }\n}\n\nvar RUN_SAGA_SIGNATURE = 'runSaga(options, saga, ...args)';\nvar NON_GENERATOR_ERR = RUN_SAGA_SIGNATURE + \": saga argument must be a Generator function!\";\nfunction runSaga(_ref, saga) {\n var _ref$channel = _ref.channel,\n channel = _ref$channel === void 0 ? stdChannel() : _ref$channel,\n dispatch = _ref.dispatch,\n getState = _ref.getState,\n _ref$context = _ref.context,\n context = _ref$context === void 0 ? {} : _ref$context,\n sagaMonitor = _ref.sagaMonitor,\n effectMiddlewares = _ref.effectMiddlewares,\n _ref$onError = _ref.onError,\n onError = _ref$onError === void 0 ? logError : _ref$onError;\n\n if (process.env.NODE_ENV !== 'production') {\n check(saga, func, NON_GENERATOR_ERR);\n }\n\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var iterator$1 = saga.apply(void 0, args);\n\n if (process.env.NODE_ENV !== 'production') {\n check(iterator$1, iterator, NON_GENERATOR_ERR);\n }\n\n var effectId = nextSagaId();\n\n if (sagaMonitor) {\n // monitors are expected to have a certain interface, let's fill-in any missing ones\n sagaMonitor.rootSagaStarted = sagaMonitor.rootSagaStarted || noop;\n sagaMonitor.effectTriggered = sagaMonitor.effectTriggered || noop;\n sagaMonitor.effectResolved = sagaMonitor.effectResolved || noop;\n sagaMonitor.effectRejected = sagaMonitor.effectRejected || noop;\n sagaMonitor.effectCancelled = sagaMonitor.effectCancelled || noop;\n sagaMonitor.actionDispatched = sagaMonitor.actionDispatched || noop;\n sagaMonitor.rootSagaStarted({\n effectId: effectId,\n saga: saga,\n args: args\n });\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (notUndef(dispatch)) {\n check(dispatch, func, 'dispatch must be a function');\n }\n\n if (notUndef(getState)) {\n check(getState, func, 'getState must be a function');\n }\n\n if (notUndef(effectMiddlewares)) {\n var MIDDLEWARE_TYPE_ERROR = 'effectMiddlewares must be an array of functions';\n check(effectMiddlewares, array$1, MIDDLEWARE_TYPE_ERROR);\n effectMiddlewares.forEach(function (effectMiddleware) {\n return check(effectMiddleware, func, MIDDLEWARE_TYPE_ERROR);\n });\n }\n\n check(onError, func, 'onError passed to the redux-saga is not a function!');\n }\n\n var finalizeRunEffect;\n\n if (effectMiddlewares) {\n var middleware = compose.apply(void 0, effectMiddlewares);\n\n finalizeRunEffect = function finalizeRunEffect(runEffect) {\n return function (effect, effectId, currCb) {\n var plainRunEffect = function plainRunEffect(eff) {\n return runEffect(eff, effectId, currCb);\n };\n\n return middleware(plainRunEffect)(effect);\n };\n };\n } else {\n finalizeRunEffect = identity;\n }\n\n var env = {\n channel: channel,\n dispatch: wrapSagaDispatch(dispatch),\n getState: getState,\n sagaMonitor: sagaMonitor,\n onError: onError,\n finalizeRunEffect: finalizeRunEffect\n };\n return immediately(function () {\n var task = proc(env, iterator$1, context, effectId, getMetaInfo(saga),\n /* isRoot */\n true, undefined);\n\n if (sagaMonitor) {\n sagaMonitor.effectResolved(effectId, task);\n }\n\n return task;\n });\n}\n\nfunction sagaMiddlewareFactory(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$context = _ref.context,\n context = _ref$context === void 0 ? {} : _ref$context,\n _ref$channel = _ref.channel,\n channel = _ref$channel === void 0 ? stdChannel() : _ref$channel,\n sagaMonitor = _ref.sagaMonitor,\n options = _objectWithoutPropertiesLoose(_ref, [\"context\", \"channel\", \"sagaMonitor\"]);\n\n var boundRunSaga;\n\n if (process.env.NODE_ENV !== 'production') {\n check(channel, channel$1, 'options.channel passed to the Saga middleware is not a channel');\n }\n\n function sagaMiddleware(_ref2) {\n var getState = _ref2.getState,\n dispatch = _ref2.dispatch;\n boundRunSaga = runSaga.bind(null, _extends({}, options, {\n context: context,\n channel: channel,\n dispatch: dispatch,\n getState: getState,\n sagaMonitor: sagaMonitor\n }));\n return function (next) {\n return function (action) {\n if (sagaMonitor && sagaMonitor.actionDispatched) {\n sagaMonitor.actionDispatched(action);\n }\n\n var result = next(action); // hit reducers\n\n channel.put(action);\n return result;\n };\n };\n }\n\n sagaMiddleware.run = function () {\n if (process.env.NODE_ENV !== 'production' && !boundRunSaga) {\n throw new Error('Before running a Saga, you must mount the Saga middleware on the Store using applyMiddleware');\n }\n\n return boundRunSaga.apply(void 0, arguments);\n };\n\n sagaMiddleware.setContext = function (props) {\n if (process.env.NODE_ENV !== 'production') {\n check(props, object, createSetContextWarning('sagaMiddleware', props));\n }\n\n assignWithSymbols(context, props);\n };\n\n return sagaMiddleware;\n}\n\nexport default sagaMiddlewareFactory;\nexport { END, channel, eventChannel, isEnd, multicastChannel, runSaga, stdChannel };\n","import createSagaMiddleware__default from '@redux-saga/core';\nexport * from '@redux-saga/core';\n\n\n\nexport default createSagaMiddleware__default;\n","import DebouncePromise from 'debounce-promise';\nimport { onlyResolvesLast } from 'awesome-only-resolves-last-promise';\n\ntype ArgumentsType<T> = T extends (...args: infer A) => any ? A : never;\n\nexport type AwesomeDebounceOptions = {\n key: (...args: any[]) => string | null | undefined;\n onlyResolvesLast: boolean;\n} & DebouncePromise.DebounceOptions;\n\n\nconst DefaultOptions = {\n // One distinct debounced function is created per key and added to an internal cache\n // By default, the key is null, which means that all the calls\n // will share the same debounced function\n key: (..._args: any[]) => null,\n\n // By default, a debounced function will only resolve\n // the last promise it returned\n // Former calls will stay unresolved, so that you don't have\n // to handle concurrency issues in your code\n // Setting this to false means all returned promises will resolve to the last result\n onlyResolvesLast: true,\n};\n\n\ntype CacheConfig<Fun extends (...args: any[]) => any> = {\n func: Fun,\n wait: number,\n options: AwesomeDebounceOptions\n}\n\n// TODO not useful right now but will be useful if we want to support cancellation\ntype CacheFunction<Fun extends (...args: any[]) => any> = {\n func: Fun,\n // cancel: () => void,\n}\n\n// We create a debouncing function cache, because when wrapping the original function,\n// we may actually want to route the function call to different debounced functions depending function paameters\nclass DebounceCache<Fun extends (...args: any[]) => any> {\n config: CacheConfig<Fun>;\n\n debounceSingleton: CacheFunction<Fun> | null; // key not used\n debounceCache: { [key: string]: CacheFunction<Fun> }; // key used\n\n constructor(config: CacheConfig<Fun>) {\n this.config = config;\n this.debounceSingleton = null;\n this.debounceCache = {}; // when key feature is used\n }\n\n _createDebouncedFunction(): CacheFunction<Fun> {\n let debouncedFunc: Fun = DebouncePromise(this.config.func, this.config.wait, this.config.options) as any; // TODO TS\n if (this.config.options.onlyResolvesLast) {\n debouncedFunc = onlyResolvesLast(debouncedFunc);\n }\n return {\n func: debouncedFunc,\n };\n };\n\n getDebouncedFunction(\n args: ArgumentsType<Fun>,\n ): CacheFunction<Fun> {\n const key = this.config.options.key(...args);\n if (key === null || typeof key === 'undefined') {\n if (!this.debounceSingleton) {\n this.debounceSingleton = this._createDebouncedFunction();\n }\n return this.debounceSingleton;\n }\n else {\n if (!this.debounceCache[key]) {\n this.debounceCache[key] = this._createDebouncedFunction();\n }\n return this.debounceCache[key];\n }\n }\n}\n\n// extra methods are \"added\" to the the returned debounced async function\ntype ReturnedFunction<Fun> = Fun & {\n // cancel: (key?: string) => void\n}\n\nfunction AwesomeDebouncePromise<Fun extends (...args: any[]) => any>(\n func: Fun,\n wait: number,\n options?: Partial<AwesomeDebounceOptions>,\n): ReturnedFunction<Fun> {\n const finalOptions: AwesomeDebounceOptions = {\n ...DefaultOptions,\n ...options,\n };\n\n const debounceCache = new DebounceCache<Fun>({\n func,\n wait,\n options: finalOptions,\n });\n\n const AwesomeDebouncePromiseWrapper = ((...args: ArgumentsType<Fun>) => {\n const debouncedFn = debounceCache.getDebouncedFunction(\n args,\n ).func;\n return debouncedFn(...args);\n }) as ReturnedFunction<Fun>; // TODO fix TS\n\n /*\n AwesomeDebouncePromiseWrapper.cancel = (key?: string) => {\n\n };\n */\n return AwesomeDebouncePromiseWrapper;\n}\n\nexport default AwesomeDebouncePromise;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Area, MediaSize, Point, Size } from './types'\n\n/**\n * Compute the dimension of the crop area based on media size,\n * aspect ratio and optionally rotation\n */\nexport function getCropSize(\n mediaWidth: number,\n mediaHeight: number,\n containerWidth: number,\n containerHeight: number,\n aspect: number,\n rotation = 0\n): Size {\n const { width, height } = translateSize(mediaWidth, mediaHeight, rotation)\n const fittingWidth = Math.min(width, containerWidth)\n const fittingHeight = Math.min(height, containerHeight)\n\n if (fittingWidth > fittingHeight * aspect) {\n return {\n width: fittingHeight * aspect,\n height: fittingHeight,\n }\n }\n\n return {\n width: fittingWidth,\n height: fittingWidth / aspect,\n }\n}\n\n/**\n * Ensure a new media position stays in the crop area.\n */\nexport function restrictPosition(\n position: Point,\n mediaSize: Size,\n cropSize: Size,\n zoom: number,\n rotation = 0\n): Point {\n const { width, height } = translateSize(mediaSize.width, mediaSize.height, rotation)\n\n return {\n x: restrictPositionCoord(position.x, width, cropSize.width, zoom),\n y: restrictPositionCoord(position.y, height, cropSize.height, zoom),\n }\n}\n\nfunction restrictPositionCoord(\n position: number,\n mediaSize: number,\n cropSize: number,\n zoom: number\n): number {\n const maxPosition = (mediaSize * zoom) / 2 - cropSize / 2\n return Math.min(maxPosition, Math.max(position, -maxPosition))\n}\n\nexport function getDistanceBetweenPoints(pointA: Point, pointB: Point) {\n return Math.sqrt(Math.pow(pointA.y - pointB.y, 2) + Math.pow(pointA.x - pointB.x, 2))\n}\n\nexport function getRotationBetweenPoints(pointA: Point, pointB: Point) {\n return (Math.atan2(pointB.y - pointA.y, pointB.x - pointA.x) * 180) / Math.PI\n}\n\n/**\n * Compute the output cropped area of the media in percentages and pixels.\n * x/y are the top-left coordinates on the src media\n */\nexport function computeCroppedArea(\n crop: Point,\n mediaSize: MediaSize,\n cropSize: Size,\n aspect: number,\n zoom: number,\n rotation = 0,\n restrictPosition = true\n): { croppedAreaPercentages: Area; croppedAreaPixels: Area } {\n // if the media is rotated by the user, we cannot limit the position anymore\n // as it might need to be negative.\n const limitAreaFn = restrictPosition && rotation === 0 ? limitArea : noOp\n const croppedAreaPercentages = {\n x: limitAreaFn(\n 100,\n (((mediaSize.width - cropSize.width / zoom) / 2 - crop.x / zoom) / mediaSize.width) * 100\n ),\n y: limitAreaFn(\n 100,\n (((mediaSize.height - cropSize.height / zoom) / 2 - crop.y / zoom) / mediaSize.height) * 100\n ),\n width: limitAreaFn(100, ((cropSize.width / mediaSize.width) * 100) / zoom),\n height: limitAreaFn(100, ((cropSize.height / mediaSize.height) * 100) / zoom),\n }\n\n // we compute the pixels size naively\n const widthInPixels = Math.round(\n limitAreaFn(\n mediaSize.naturalWidth,\n (croppedAreaPercentages.width * mediaSize.naturalWidth) / 100\n )\n )\n const heightInPixels = Math.round(\n limitAreaFn(\n mediaSize.naturalHeight,\n (croppedAreaPercentages.height * mediaSize.naturalHeight) / 100\n )\n )\n const isImgWiderThanHigh = mediaSize.naturalWidth >= mediaSize.naturalHeight * aspect\n\n // then we ensure the width and height exactly match the aspect (to avoid rounding approximations)\n // if the media is wider than high, when zoom is 0, the crop height will be equals to iamge height\n // thus we want to compute the width from the height and aspect for accuracy.\n // Otherwise, we compute the height from width and aspect.\n const sizePixels = isImgWiderThanHigh\n ? {\n width: Math.round(heightInPixels * aspect),\n height: heightInPixels,\n }\n : {\n width: widthInPixels,\n height: Math.round(widthInPixels / aspect),\n }\n const croppedAreaPixels = {\n ...sizePixels,\n x: Math.round(\n limitAreaFn(\n mediaSize.naturalWidth - sizePixels.width,\n (croppedAreaPercentages.x * mediaSize.naturalWidth) / 100\n )\n ),\n y: Math.round(\n limitAreaFn(\n mediaSize.naturalHeight - sizePixels.height,\n (croppedAreaPercentages.y * mediaSize.naturalHeight) / 100\n )\n ),\n }\n return { croppedAreaPercentages, croppedAreaPixels }\n}\n\n/**\n * Ensure the returned value is between 0 and max\n */\nfunction limitArea(max: number, value: number): number {\n return Math.min(max, Math.max(0, value))\n}\n\nfunction noOp(_max: number, value: number) {\n return value\n}\n\n/**\n * Compute the crop and zoom from the croppedAreaPixels\n */\nfunction getZoomFromCroppedAreaPixels(\n croppedAreaPixels: Area,\n mediaSize: MediaSize,\n cropSize?: Size\n): number {\n const mediaZoom = mediaSize.width / mediaSize.naturalWidth\n\n if (cropSize) {\n const isHeightMaxSize = cropSize.height > cropSize.width\n return isHeightMaxSize\n ? cropSize.height / mediaZoom / croppedAreaPixels.height\n : cropSize.width / mediaZoom / croppedAreaPixels.width\n }\n\n const aspect = croppedAreaPixels.width / croppedAreaPixels.height\n const isHeightMaxSize = mediaSize.naturalWidth >= mediaSize.naturalHeight * aspect\n return isHeightMaxSize\n ? mediaSize.naturalHeight / croppedAreaPixels.height\n : mediaSize.naturalWidth / croppedAreaPixels.width\n}\n\n/**\n * Compute the crop and zoom from the croppedAreaPixels\n */\nexport function getInitialCropFromCroppedAreaPixels(\n croppedAreaPixels: Area,\n mediaSize: MediaSize,\n cropSize?: Size\n): { crop: Point; zoom: number } {\n const mediaZoom = mediaSize.width / mediaSize.naturalWidth\n\n const zoom = getZoomFromCroppedAreaPixels(croppedAreaPixels, mediaSize, cropSize)\n\n const cropZoom = mediaZoom * zoom\n\n const crop = {\n x: ((mediaSize.naturalWidth - croppedAreaPixels.width) / 2 - croppedAreaPixels.x) * cropZoom,\n y: ((mediaSize.naturalHeight - croppedAreaPixels.height) / 2 - croppedAreaPixels.y) * cropZoom,\n }\n return { crop, zoom }\n}\n\n/**\n * Return the point that is the center of point a and b\n */\nexport function getCenter(a: Point, b: Point): Point {\n return {\n x: (b.x + a.x) / 2,\n y: (b.y + a.y) / 2,\n }\n}\n\n/**\n *\n * Returns an x,y point once rotated around xMid,yMid\n */\nexport function rotateAroundMidPoint(\n x: number,\n y: number,\n xMid: number,\n yMid: number,\n degrees: number\n): [number, number] {\n const cos = Math.cos\n const sin = Math.sin\n const radian = (degrees * Math.PI) / 180 // Convert to radians\n // Subtract midpoints, so that midpoint is translated to origin\n // and add it in the end again\n const xr = (x - xMid) * cos(radian) - (y - yMid) * sin(radian) + xMid\n const yr = (x - xMid) * sin(radian) + (y - yMid) * cos(radian) + yMid\n\n return [xr, yr]\n}\n\n/**\n * Returns the new bounding area of a rotated rectangle.\n */\nexport function translateSize(width: number, height: number, rotation: number): Size {\n const centerX = width / 2\n const centerY = height / 2\n\n const outerBounds = [\n rotateAroundMidPoint(0, 0, centerX, centerY, rotation),\n rotateAroundMidPoint(width, 0, centerX, centerY, rotation),\n rotateAroundMidPoint(width, height, centerX, centerY, rotation),\n rotateAroundMidPoint(0, height, centerX, centerY, rotation),\n ]\n\n const minX = Math.min(...outerBounds.map(p => p[0]))\n const maxX = Math.max(...outerBounds.map(p => p[0]))\n const minY = Math.min(...outerBounds.map(p => p[1]))\n const maxY = Math.max(...outerBounds.map(p => p[1]))\n\n return { width: maxX - minX, height: maxY - minY }\n}\n\n/**\n * Combine multiple class names into a single string.\n */\nexport function classNames(...args: (boolean | string | number | undefined | void | null)[]) {\n return args\n .filter(value => {\n if (typeof value === 'string' && value.length > 0) {\n return true\n }\n\n return false\n })\n .join(' ')\n .trim()\n}\n","import React from 'react'\nimport normalizeWheel from 'normalize-wheel'\nimport { Area, MediaSize, Point, Size, VideoSrc } from './types'\nimport {\n getCropSize,\n restrictPosition,\n getDistanceBetweenPoints,\n getRotationBetweenPoints,\n computeCroppedArea,\n getCenter,\n getInitialCropFromCroppedAreaPixels,\n classNames,\n} from './helpers'\nimport cssStyles from './styles.css'\n\nexport type CropperProps = {\n image?: string\n video?: string | VideoSrc[]\n transform?: string\n crop: Point\n zoom: number\n rotation: number\n aspect: number\n minZoom: number\n maxZoom: number\n cropShape: 'rect' | 'round'\n cropSize?: Size\n objectFit?: 'contain' | 'horizontal-cover' | 'vertical-cover'\n showGrid?: boolean\n zoomSpeed: number\n zoomWithScroll?: boolean\n onCropChange: (location: Point) => void\n onZoomChange?: (zoom: number) => void\n onRotationChange?: (rotation: number) => void\n onCropComplete?: (croppedArea: Area, croppedAreaPixels: Area) => void\n onCropAreaChange?: (croppedArea: Area, croppedAreaPixels: Area) => void\n onCropSizeChange?: (cropSize: Size) => void\n onInteractionStart?: () => void\n onInteractionEnd?: () => void\n onMediaLoaded?: (mediaSize: MediaSize) => void\n style: {\n containerStyle?: React.CSSProperties\n mediaStyle?: React.CSSProperties\n cropAreaStyle?: React.CSSProperties\n }\n classes: {\n containerClassName?: string\n mediaClassName?: string\n cropAreaClassName?: string\n }\n restrictPosition: boolean\n initialCroppedAreaPixels?: Area\n mediaProps: React.ImgHTMLAttributes<HTMLElement> | React.VideoHTMLAttributes<HTMLElement>\n disableAutomaticStylesInjection?: boolean\n}\n\ntype State = {\n cropSize: Size | null\n hasWheelJustStarted: boolean\n}\n\nconst MIN_ZOOM = 1\nconst MAX_ZOOM = 3\n\nclass Cropper extends React.Component<CropperProps, State> {\n static defaultProps = {\n zoom: 1,\n rotation: 0,\n aspect: 4 / 3,\n maxZoom: MAX_ZOOM,\n minZoom: MIN_ZOOM,\n cropShape: 'rect',\n objectFit: 'contain',\n showGrid: true,\n style: {},\n classes: {},\n mediaProps: {},\n zoomSpeed: 1,\n restrictPosition: true,\n zoomWithScroll: true,\n }\n\n imageRef: HTMLImageElement | null = null\n videoRef: HTMLVideoElement | null = null\n containerRef: HTMLDivElement | null = null\n styleRef: HTMLStyleElement | null = null\n containerRect: DOMRect | null = null\n mediaSize: MediaSize = { width: 0, height: 0, naturalWidth: 0, naturalHeight: 0 }\n dragStartPosition: Point = { x: 0, y: 0 }\n dragStartCrop: Point = { x: 0, y: 0 }\n lastPinchDistance = 0\n lastPinchRotation = 0\n rafDragTimeout: number | null = null\n rafPinchTimeout: number | null = null\n wheelTimer: number | null = null\n\n state: State = {\n cropSize: null,\n hasWheelJustStarted: false,\n }\n\n componentDidMount() {\n window.addEventListener('resize', this.computeSizes)\n if (this.containerRef) {\n this.props.zoomWithScroll &&\n this.containerRef.addEventListener('wheel', this.onWheel, { passive: false })\n this.containerRef.addEventListener('gesturestart', this.preventZoomSafari)\n this.containerRef.addEventListener('gesturechange', this.preventZoomSafari)\n }\n\n if (!this.props.disableAutomaticStylesInjection) {\n this.styleRef = document.createElement('style')\n this.styleRef.setAttribute('type', 'text/css')\n this.styleRef.innerHTML = cssStyles\n document.head.appendChild(this.styleRef)\n }\n\n // when rendered via SSR, the image can already be loaded and its onLoad callback will never be called\n if (this.imageRef && this.imageRef.complete) {\n this.onMediaLoad()\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.computeSizes)\n if (this.containerRef) {\n this.containerRef.removeEventListener('gesturestart', this.preventZoomSafari)\n this.containerRef.removeEventListener('gesturechange', this.preventZoomSafari)\n }\n\n if (this.styleRef) {\n this.styleRef.parentNode?.removeChild(this.styleRef)\n }\n\n this.cleanEvents()\n this.props.zoomWithScroll && this.clearScrollEvent()\n }\n\n componentDidUpdate(prevProps: CropperProps) {\n if (prevProps.rotation !== this.props.rotation) {\n this.computeSizes()\n this.recomputeCropPosition()\n } else if (prevProps.aspect !== this.props.aspect) {\n this.computeSizes()\n } else if (prevProps.zoom !== this.props.zoom) {\n this.recomputeCropPosition()\n } else if (\n prevProps.cropSize?.height !== this.props.cropSize?.height ||\n prevProps.cropSize?.width !== this.props.cropSize?.width\n ) {\n this.computeSizes()\n } else if (\n prevProps.crop?.x !== this.props.crop?.x ||\n prevProps.crop?.y !== this.props.crop?.y\n ) {\n this.emitCropAreaChange()\n }\n if (prevProps.zoomWithScroll !== this.props.zoomWithScroll && this.containerRef) {\n this.props.zoomWithScroll\n ? this.containerRef.addEventListener('wheel', this.onWheel, { passive: false })\n : this.clearScrollEvent()\n }\n if (prevProps.video !== this.props.video) {\n this.videoRef?.load()\n }\n }\n\n // this is to prevent Safari on iOS >= 10 to zoom the page\n preventZoomSafari = (e: Event) => e.preventDefault()\n\n cleanEvents = () => {\n document.removeEventListener('mousemove', this.onMouseMove)\n document.removeEventListener('mouseup', this.onDragStopped)\n document.removeEventListener('touchmove', this.onTouchMove)\n document.removeEventListener('touchend', this.onDragStopped)\n }\n\n clearScrollEvent = () => {\n if (this.containerRef) this.containerRef.removeEventListener('wheel', this.onWheel)\n if (this.wheelTimer) {\n clearTimeout(this.wheelTimer)\n }\n }\n\n onMediaLoad = () => {\n this.computeSizes()\n this.emitCropData()\n this.setInitialCrop()\n\n if (this.props.onMediaLoaded) {\n this.props.onMediaLoaded(this.mediaSize)\n }\n }\n\n setInitialCrop = () => {\n const { initialCroppedAreaPixels, cropSize } = this.props\n\n if (!initialCroppedAreaPixels) {\n return\n }\n\n const { crop, zoom } = getInitialCropFromCroppedAreaPixels(\n initialCroppedAreaPixels,\n this.mediaSize,\n cropSize\n )\n this.props.onCropChange(crop)\n this.props.onZoomChange && this.props.onZoomChange(zoom)\n }\n\n getAspect() {\n const { cropSize, aspect } = this.props\n if (cropSize) {\n return cropSize.width / cropSize.height\n }\n return aspect\n }\n\n computeSizes = () => {\n const mediaRef = this.imageRef || this.videoRef\n if (mediaRef && this.containerRef) {\n this.containerRect = this.containerRef.getBoundingClientRect()\n\n this.mediaSize = {\n width: mediaRef.offsetWidth,\n height: mediaRef.offsetHeight,\n naturalWidth: this.imageRef?.naturalWidth || this.videoRef?.videoWidth || 0,\n naturalHeight: this.imageRef?.naturalHeight || this.videoRef?.videoHeight || 0,\n }\n const cropSize = this.props.cropSize\n ? this.props.cropSize\n : getCropSize(\n mediaRef.offsetWidth,\n mediaRef.offsetHeight,\n this.containerRect.width,\n this.containerRect.height,\n this.props.aspect,\n this.props.rotation\n )\n\n if (\n this.state.cropSize?.height !== cropSize.height ||\n this.state.cropSize?.width !== cropSize.width\n ) {\n this.props.onCropSizeChange && this.props.onCropSizeChange(cropSize)\n }\n this.setState({ cropSize }, this.recomputeCropPosition)\n }\n }\n\n static getMousePoint = (e: MouseEvent | React.MouseEvent) => ({\n x: Number(e.clientX),\n y: Number(e.clientY),\n })\n\n static getTouchPoint = (touch: Touch | React.Touch) => ({\n x: Number(touch.clientX),\n y: Number(touch.clientY),\n })\n\n onMouseDown = (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n e.preventDefault()\n document.addEventListener('mousemove', this.onMouseMove)\n document.addEventListener('mouseup', this.onDragStopped)\n this.onDragStart(Cropper.getMousePoint(e))\n }\n\n onMouseMove = (e: MouseEvent) => this.onDrag(Cropper.getMousePoint(e))\n\n onTouchStart = (e: React.TouchEvent<HTMLDivElement>) => {\n document.addEventListener('touchmove', this.onTouchMove, { passive: false }) // iOS 11 now defaults to passive: true\n document.addEventListener('touchend', this.onDragStopped)\n if (e.touches.length === 2) {\n this.onPinchStart(e)\n } else if (e.touches.length === 1) {\n this.onDragStart(Cropper.getTouchPoint(e.touches[0]))\n }\n }\n\n onTouchMove = (e: TouchEvent) => {\n // Prevent whole page from scrolling on iOS.\n e.preventDefault()\n if (e.touches.length === 2) {\n this.onPinchMove(e)\n } else if (e.touches.length === 1) {\n this.onDrag(Cropper.getTouchPoint(e.touches[0]))\n }\n }\n\n onDragStart = ({ x, y }: Point) => {\n this.dragStartPosition = { x, y }\n this.dragStartCrop = { ...this.props.crop }\n this.props.onInteractionStart?.()\n }\n\n onDrag = ({ x, y }: Point) => {\n if (this.rafDragTimeout) window.cancelAnimationFrame(this.rafDragTimeout)\n\n this.rafDragTimeout = window.requestAnimationFrame(() => {\n if (!this.state.cropSize) return\n if (x === undefined || y === undefined) return\n const offsetX = x - this.dragStartPosition.x\n const offsetY = y - this.dragStartPosition.y\n const requestedPosition = {\n x: this.dragStartCrop.x + offsetX,\n y: this.dragStartCrop.y + offsetY,\n }\n\n const newPosition = this.props.restrictPosition\n ? restrictPosition(\n requestedPosition,\n this.mediaSize,\n this.state.cropSize,\n this.props.zoom,\n this.props.rotation\n )\n : requestedPosition\n this.props.onCropChange(newPosition)\n })\n }\n\n onDragStopped = () => {\n this.cleanEvents()\n this.emitCropData()\n this.props.onInteractionEnd?.()\n }\n\n onPinchStart(e: React.TouchEvent<HTMLDivElement>) {\n const pointA = Cropper.getTouchPoint(e.touches[0])\n const pointB = Cropper.getTouchPoint(e.touches[1])\n this.lastPinchDistance = getDistanceBetweenPoints(pointA, pointB)\n this.lastPinchRotation = getRotationBetweenPoints(pointA, pointB)\n this.onDragStart(getCenter(pointA, pointB))\n }\n\n onPinchMove(e: TouchEvent) {\n const pointA = Cropper.getTouchPoint(e.touches[0])\n const pointB = Cropper.getTouchPoint(e.touches[1])\n const center = getCenter(pointA, pointB)\n this.onDrag(center)\n\n if (this.rafPinchTimeout) window.cancelAnimationFrame(this.rafPinchTimeout)\n this.rafPinchTimeout = window.requestAnimationFrame(() => {\n const distance = getDistanceBetweenPoints(pointA, pointB)\n const newZoom = this.props.zoom * (distance / this.lastPinchDistance)\n this.setNewZoom(newZoom, center)\n this.lastPinchDistance = distance\n\n const rotation = getRotationBetweenPoints(pointA, pointB)\n const newRotation = this.props.rotation + (rotation - this.lastPinchRotation)\n this.props.onRotationChange && this.props.onRotationChange(newRotation)\n this.lastPinchRotation = rotation\n })\n }\n\n onWheel = (e: WheelEvent) => {\n e.preventDefault()\n const point = Cropper.getMousePoint(e)\n const { pixelY } = normalizeWheel(e)\n const newZoom = this.props.zoom - (pixelY * this.props.zoomSpeed) / 200\n this.setNewZoom(newZoom, point)\n\n if (!this.state.hasWheelJustStarted) {\n this.setState({ hasWheelJustStarted: true }, () => this.props.onInteractionStart?.())\n }\n\n if (this.wheelTimer) {\n clearTimeout(this.wheelTimer)\n }\n this.wheelTimer = window.setTimeout(\n () => this.setState({ hasWheelJustStarted: false }, () => this.props.onInteractionEnd?.()),\n 250\n )\n }\n\n getPointOnContainer = ({ x, y }: Point) => {\n if (!this.containerRect) {\n throw new Error('The Cropper is not mounted')\n }\n return {\n x: this.containerRect.width / 2 - (x - this.containerRect.left),\n y: this.containerRect.height / 2 - (y - this.containerRect.top),\n }\n }\n\n getPointOnMedia = ({ x, y }: Point) => {\n const { crop, zoom } = this.props\n return {\n x: (x + crop.x) / zoom,\n y: (y + crop.y) / zoom,\n }\n }\n\n setNewZoom = (zoom: number, point: Point) => {\n if (!this.state.cropSize || !this.props.onZoomChange) return\n\n const zoomPoint = this.getPointOnContainer(point)\n const zoomTarget = this.getPointOnMedia(zoomPoint)\n const newZoom = Math.min(this.props.maxZoom, Math.max(zoom, this.props.minZoom))\n const requestedPosition = {\n x: zoomTarget.x * newZoom - zoomPoint.x,\n y: zoomTarget.y * newZoom - zoomPoint.y,\n }\n const newPosition = this.props.restrictPosition\n ? restrictPosition(\n requestedPosition,\n this.mediaSize,\n this.state.cropSize,\n newZoom,\n this.props.rotation\n )\n : requestedPosition\n\n this.props.onCropChange(newPosition)\n this.props.onZoomChange(newZoom)\n }\n\n getCropData = () => {\n if (!this.state.cropSize) {\n return null\n }\n\n // this is to ensure the crop is correctly restricted after a zoom back (https://github.com/ricardo-ch/react-easy-crop/issues/6)\n const restrictedPosition = this.props.restrictPosition\n ? restrictPosition(\n this.props.crop,\n this.mediaSize,\n this.state.cropSize,\n this.props.zoom,\n this.props.rotation\n )\n : this.props.crop\n return computeCroppedArea(\n restrictedPosition,\n this.mediaSize,\n this.state.cropSize,\n this.getAspect(),\n this.props.zoom,\n this.props.rotation,\n this.props.restrictPosition\n )\n }\n\n emitCropData = () => {\n const cropData = this.getCropData()\n if (!cropData) return\n\n const { croppedAreaPercentages, croppedAreaPixels } = cropData\n if (this.props.onCropComplete) {\n this.props.onCropComplete(croppedAreaPercentages, croppedAreaPixels)\n }\n\n if (this.props.onCropAreaChange) {\n this.props.onCropAreaChange(croppedAreaPercentages, croppedAreaPixels)\n }\n }\n\n emitCropAreaChange = () => {\n const cropData = this.getCropData()\n if (!cropData) return\n\n const { croppedAreaPercentages, croppedAreaPixels } = cropData\n if (this.props.onCropAreaChange) {\n this.props.onCropAreaChange(croppedAreaPercentages, croppedAreaPixels)\n }\n }\n\n recomputeCropPosition = () => {\n if (!this.state.cropSize) return\n\n const newPosition = this.props.restrictPosition\n ? restrictPosition(\n this.props.crop,\n this.mediaSize,\n this.state.cropSize,\n this.props.zoom,\n this.props.rotation\n )\n : this.props.crop\n this.props.onCropChange(newPosition)\n this.emitCropData()\n }\n\n render() {\n const {\n image,\n video,\n mediaProps,\n transform,\n crop: { x, y },\n rotation,\n zoom,\n cropShape,\n showGrid,\n style: { containerStyle, cropAreaStyle, mediaStyle },\n classes: { containerClassName, cropAreaClassName, mediaClassName },\n objectFit,\n } = this.props\n\n return (\n <div\n onMouseDown={this.onMouseDown}\n onTouchStart={this.onTouchStart}\n ref={(el) => (this.containerRef = el)}\n data-testid=\"container\"\n style={containerStyle}\n className={classNames('reactEasyCrop_Container', containerClassName)}\n >\n {image ? (\n <img\n alt=\"\"\n className={classNames(\n 'reactEasyCrop_Image',\n objectFit === 'contain' && 'reactEasyCrop_Contain',\n objectFit === 'horizontal-cover' && 'reactEasyCrop_Cover_Horizontal',\n objectFit === 'vertical-cover' && 'reactEasyCrop_Cover_Vertical',\n mediaClassName\n )}\n {...(mediaProps as React.ImgHTMLAttributes<HTMLElement>)}\n src={image}\n ref={(el: HTMLImageElement) => (this.imageRef = el)}\n style={{\n ...mediaStyle,\n transform:\n transform || `translate(${x}px, ${y}px) rotate(${rotation}deg) scale(${zoom})`,\n }}\n onLoad={this.onMediaLoad}\n />\n ) : (\n video && (\n <video\n autoPlay\n loop\n muted={true}\n className={classNames(\n 'reactEasyCrop_Video',\n objectFit === 'contain' && 'reactEasyCrop_Contain',\n objectFit === 'horizontal-cover' && 'reactEasyCrop_Cover_Horizontal',\n objectFit === 'vertical-cover' && 'reactEasyCrop_Cover_Vertical',\n mediaClassName\n )}\n {...mediaProps}\n ref={(el: HTMLVideoElement) => (this.videoRef = el)}\n onLoadedMetadata={this.onMediaLoad}\n style={{\n ...mediaStyle,\n transform:\n transform || `translate(${x}px, ${y}px) rotate(${rotation}deg) scale(${zoom})`,\n }}\n controls={false}\n >\n {(Array.isArray(video) ? video : [{ src: video }]).map((item) => (\n <source key={item.src} {...item} />\n ))}\n </video>\n )\n )}\n {this.state.cropSize && (\n <div\n style={{\n ...cropAreaStyle,\n width: this.state.cropSize.width,\n height: this.state.cropSize.height,\n }}\n data-testid=\"cropper\"\n className={classNames(\n 'reactEasyCrop_CropArea',\n cropShape === 'round' && 'reactEasyCrop_CropAreaRound',\n showGrid && 'reactEasyCrop_CropAreaGrid',\n cropAreaClassName\n )}\n />\n )}\n </div>\n )\n }\n}\n\nexport default Cropper\n","/**\n * @license React\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=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\n","/**\n * @license React\n * react-dom.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 Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(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 z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(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){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(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(ra,\nsa);z[b]=new v(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(ra,sa);z[b]=new v(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(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(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 ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction 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 A({},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 ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(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\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(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 cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(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)}function kb(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\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=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(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!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,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({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 ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(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}}var wb=null;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(p(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;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=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.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=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=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){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 Ne(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)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"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&&Ne(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&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;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}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(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,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;function Lg(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var Mg=Uf(null),Ng=null,Og=null,Pg=null;function Qg(){Pg=Og=Ng=null}function Rg(a){var b=Mg.current;E(Mg);a._currentValue=b}\nfunction Sg(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Tg(a,b){Ng=a;Pg=Og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(Ug=!0),a.firstContext=null)}\nfunction Vg(a){var b=a._currentValue;if(Pg!==a)if(a={context:a,memoizedValue:b,next:null},null===Og){if(null===Ng)throw Error(p(308));Og=a;Ng.dependencies={lanes:0,firstContext:a}}else Og=Og.next=a;return b}var Wg=null;function Xg(a){null===Wg?Wg=[a]:Wg.push(a)}function Yg(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,Xg(b)):(c.next=e.next,e.next=c);b.interleaved=c;return Zg(a,d)}\nfunction Zg(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var $g=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction bh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction dh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return Zg(a,c)}e=d.interleaved;null===e?(b.next=b,Xg(d)):(b.next=e.next,e.next=b);d.interleaved=b;return Zg(a,c)}function eh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction fh(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction gh(a,b,c,d){var e=a.updateQueue;$g=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:$g=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);hh|=g;a.lanes=g;a.memoizedState=q}}\nfunction ih(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var jh=(new aa.Component).refs;function kh(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar nh={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=L(),d=\nlh(a),e=ch(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=dh(a,e,d);null!==b&&(mh(b,a,d,c),eh(b,a,d))}};function oh(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction ph(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=Vg(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=nh;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction qh(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&nh.enqueueReplaceState(b,b.state,null)}\nfunction rh(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jh;ah(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=Vg(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kh(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&nh.enqueueReplaceState(e,e.state,null),gh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}\nfunction sh(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===jh&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction th(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function uh(a){var b=a._init;return b(a._payload)}\nfunction vh(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=wh(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=xh(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&uh(f)===b.type))return d=e(b,c.props),d.ref=sh(a,b,c),d.return=a,d;d=yh(c.type,c.key,c.props,null,a.mode,d);d.ref=sh(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=zh(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ah(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=xh(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=yh(b.type,b.key,b.props,null,a.mode,c),\nc.ref=sh(a,null,b),c.return=a,c;case wa:return b=zh(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Ah(b,a.mode,c,null),b.return=a,b;th(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);th(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);th(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)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=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(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&128))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 Nh=[];\nfunction Oh(){for(var a=0;a<Nh.length;a++)Nh[a]._workInProgressVersionPrimary=null;Nh.length=0}var Ph=ua.ReactCurrentDispatcher,Qh=ua.ReactCurrentBatchConfig,Rh=0,N=null,O=null,P=null,Sh=!1,Th=!1,Uh=0,Vh=0;function Q(){throw Error(p(321));}function Wh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Xh(a,b,c,d,e,f){Rh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ph.current=null===a||null===a.memoizedState?Yh:Zh;a=c(d,e);if(Th){f=0;do{Th=!1;Uh=0;if(25<=f)throw Error(p(301));f+=1;P=O=null;b.updateQueue=null;Ph.current=$h;a=c(d,e)}while(Th)}Ph.current=ai;b=null!==O&&null!==O.next;Rh=0;P=O=N=null;Sh=!1;if(b)throw Error(p(300));return a}function bi(){var a=0!==Uh;Uh=0;return a}\nfunction ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function di(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(p(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction ei(a,b){return\"function\"===typeof b?b(a):b}\nfunction fi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=O,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){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Rh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;N.lanes|=m;hh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(Ug=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,N.lanes|=f,hh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction gi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(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]}function hi(){}\nfunction ii(a,b){var c=N,d=di(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,Ug=!0);d=d.queue;ji(ki.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==P&&P.memoizedState.tag&1){c.flags|=2048;li(9,mi.bind(null,c,d,e,b),void 0,null);if(null===R)throw Error(p(349));0!==(Rh&30)||ni(c,b,e)}return e}function ni(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction mi(a,b,c,d){b.value=c;b.getSnapshot=d;oi(b)&&pi(a)}function ki(a,b,c){return c(function(){oi(b)&&pi(a)})}function oi(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function pi(a){var b=Zg(a,1);null!==b&&mh(b,a,1,-1)}\nfunction qi(a){var b=ci();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};b.queue=a;a=a.dispatch=ri.bind(null,N,a);return[b.memoizedState,a]}\nfunction li(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,b,c,d){var e=ci();N.flags|=a;e.memoizedState=li(1|b,c,void 0,void 0===d?null:d)}\nfunction ui(a,b,c,d){var e=di();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Wh(d,g.deps)){e.memoizedState=li(b,c,f,d);return}}N.flags|=a;e.memoizedState=li(1|b,c,f,d)}function vi(a,b){return ti(8390656,8,a,b)}function ji(a,b){return ui(2048,8,a,b)}function wi(a,b){return ui(4,2,a,b)}function xi(a,b){return ui(4,4,a,b)}\nfunction yi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function zi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ui(4,4,yi.bind(null,b,a),c)}function Ai(){}function Bi(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Ci(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Di(a,b,c){if(0===(Rh&21))return a.baseState&&(a.baseState=!1,Ug=!0),a.memoizedState=c;He(c,b)||(c=yc(),N.lanes|=c,hh|=c,a.baseState=!0);return b}function Ei(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Vh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Zh={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},\nuseDebugValue:Ai,useDeferredValue:function(a){var b=di();return Di(b,O.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},$h={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var b=di();return null===\nO?b.memoizedState=a:Di(b,O.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,b){try{var c=\"\",d=b;do c+=Pa(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,digest:null}}function Li(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}\nfunction Mi(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Ni=\"function\"===typeof WeakMap?WeakMap:Map;function Oi(a,b,c){c=ch(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Pi||(Pi=!0,Qi=d);Mi(a,b)};return c}\nfunction Ri(a,b,c){c=ch(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Mi(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Mi(a,b);\"function\"!==typeof d&&(null===Si?Si=new Set([this]):Si.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Ti(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Ni;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ui.bind(null,a,b,c),b.then(a,a))}function Vi(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Wi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=ch(-1,1),b.tag=2,dh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Xi=ua.ReactCurrentOwner,Ug=!1;function Yi(a,b,c,d){b.child=null===a?Ch(b,null,c,d):Bh(b,a.child,c,d)}\nfunction Zi(a,b,c,d,e){c=c.render;var f=b.ref;Tg(b,e);d=Xh(a,b,c,d,f,e);c=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&c&&vg(b);b.flags|=1;Yi(a,b,d,e);return b.child}\nfunction aj(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!bj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,cj(a,b,f,d,e);a=yh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return $i(a,b,e)}b.flags|=1;a=wh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction cj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(Ug=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(Ug=!0);else return b.lanes=a.lanes,$i(a,b,e)}return dj(a,b,c,d,e)}\nfunction ej(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(fj,gj),gj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(fj,gj),gj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(fj,gj);gj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(fj,gj),gj|=d;Yi(a,b,e,c);return b.child}function hj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function dj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);Tg(b,e);c=Xh(a,b,c,d,f,e);d=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&d&&vg(b);b.flags|=1;Yi(a,b,c,e);return b.child}\nfunction ij(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;Tg(b,e);if(null===b.stateNode)jj(a,b),ph(b,c,d),rh(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=Vg(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&qh(b,g,d,l);$g=!1;var r=b.memoizedState;g.state=r;gh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||$g?(\"function\"===typeof m&&(kh(b,c,m,d),k=b.memoizedState),(h=$g||oh(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;bh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Lg(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=Vg(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&qh(b,g,d,k);$g=!1;r=b.memoizedState;g.state=r;gh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||$g?(\"function\"===typeof y&&(kh(b,c,y,d),n=b.memoizedState),(l=$g||oh(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return kj(a,b,c,d,f,e)}\nfunction kj(a,b,c,d,e,f){hj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),$i(a,b,f);d=b.stateNode;Xi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Bh(b,a.child,null,f),b.child=Bh(b,null,h,f)):Yi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function lj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);Ih(a,b.containerInfo)}\nfunction mj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Yi(a,b,c,d);return b.child}var nj={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction pj(a,b,c){var d=b.pendingProps,e=M.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(M,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=qj(g,d,0,null),a=Ah(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=oj(c),b.memoizedState=nj,a):rj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return sj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=wh(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=wh(h,f):(f=Ah(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?oj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=nj;return d}f=a.child;a=f.sibling;d=wh(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction rj(a,b){b=qj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function tj(a,b,c,d){null!==d&&Jg(d);Bh(b,a.child,null,c);a=rj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction sj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Li(Error(p(422))),tj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=qj({mode:\"visible\",children:d.children},e,0,null);f=Ah(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Bh(b,a.child,null,g);b.child.memoizedState=oj(g);b.memoizedState=nj;return f}if(0===(b.mode&1))return tj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Li(f,d,void 0);return tj(a,b,g,d)}h=0!==(g&a.childLanes);if(Ug||h){d=R;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,Zg(a,e),mh(d,a,e,-1))}uj();d=Li(Error(p(421)));return tj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=vj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=rj(b,d.children);b.flags|=4096;return b}function wj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);Sg(a.return,b,c)}\nfunction xj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction yj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Yi(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,c,b);else if(19===a.tag)wj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(M,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Mh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);xj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Mh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}xj(b,!0,c,null,f);break;case \"together\":xj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction jj(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function $i(a,b,c){null!==a&&(b.dependencies=a.dependencies);hh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=wh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=wh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction zj(a,b,c){switch(b.tag){case 3:lj(b);Ig();break;case 5:Kh(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:Ih(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Mg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(M,M.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return pj(a,b,c);G(M,M.current&1);a=$i(a,b,c);return null!==a?a.sibling:null}G(M,M.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return yj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(M,M.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ej(a,b,c)}return $i(a,b,c)}var Aj,Bj,Cj,Dj;\nAj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&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}c.sibling.return=c.return;c=c.sibling}};Bj=function(){};\nCj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;Hh(Eh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Dj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Ej(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Fj(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;Jh();E(Wf);E(H);Oh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Gj(zg),zg=null));Bj(a,b);S(b);return null;case 5:Lh(b);var e=Hh(Gh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Cj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"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[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Dj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=Hh(Gh.current);Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(M);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Gj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(M.current&1)?0===T&&(T=3):uj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return Jh(),\nBj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return Rg(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(M);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Ej(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Mh(a);if(null!==g){b.flags|=128;Ej(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(M,M.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Hj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,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=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Yj=!1;break a;case 3:X=h.stateNode.containerInfo;Yj=!0;break a;case 4:X=h.stateNode.containerInfo;Yj=!0;break a}h=h.return}if(null===X)throw Error(p(160));ak(f,g,e);X=null;Yj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)ek(b,a),b=b.sibling}\nfunction ek(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(b,a);fk(a);if(d&4){try{Qj(3,a,a.return),Rj(3,a)}catch(t){W(a,a.return,t)}try{Qj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);break;case 5:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:dk(b,a);fk(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:dk(b,a);fk(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:dk(b,a);fk(a);break;case 13:dk(b,a);fk(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(gk=B()));d&4&&bk(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,dk(b,a),U=l):dk(b,a);fk(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Qj(4,r,r.return);break;case 1:Mj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Mj(r,r.return);break;case 22:if(null!==r.memoizedState){hk(q);continue}}null!==y?(y.return=r,V=y):hk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:dk(b,a);fk(a);d&4&&bk(a);break;case 21:break;default:dk(b,\na),fk(a)}}function fk(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Uj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Vj(a);Xj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Vj(a);Wj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function ik(a,b,c){V=a;jk(a,b,c)}\nfunction jk(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Kj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Kj;var l=U;Kj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?kk(e):null!==k?(k.return=g,V=k):kk(e);for(;null!==f;)V=f,jk(f,b,c),f=f.sibling;V=e;Kj=h;U=l}lk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):lk(a,b,c)}}\nfunction lk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Rj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Lg(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&ih(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}ih(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Sj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function hk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction kk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Rj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Sj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Sj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar mk=Math.ceil,nk=ua.ReactCurrentDispatcher,ok=ua.ReactCurrentOwner,pk=ua.ReactCurrentBatchConfig,K=0,R=null,Y=null,Z=0,gj=0,fj=Uf(0),T=0,qk=null,hh=0,rk=0,sk=0,tk=null,uk=null,gk=0,Hj=Infinity,vk=null,Pi=!1,Qi=null,Si=null,wk=!1,xk=null,yk=0,zk=0,Ak=null,Bk=-1,Ck=0;function L(){return 0!==(K&6)?B():-1!==Bk?Bk:Bk=B()}\nfunction lh(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Ck&&(Ck=yc()),Ck;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,b,c,d){if(50<zk)throw zk=0,Ak=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==R)a===R&&(0===(K&2)&&(rk|=c),4===T&&Dk(a,Z)),Ek(a,d),1===c&&0===K&&0===(b.mode&1)&&(Hj=B()+500,fg&&jg())}\nfunction Ek(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===R?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Gk(c,Hk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Hk(a,b){Bk=-1;Ck=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Ik()&&a.callbackNode!==c)return null;var d=uc(a,a===R?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Jk(a,d);else{b=d;var e=K;K|=2;var f=Kk();if(R!==a||Z!==b)vk=null,Hj=B()+500,Lk(a,b);do try{Mk();break}catch(h){Nk(a,h)}while(1);Qg();nk.current=f;K=e;null!==Y?b=0:(R=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Ok(a,e)));if(1===b)throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;if(6===b)Dk(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Pk(e)&&(b=Jk(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Ok(a,f))),1===b))throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Qk(a,uk,vk);break;case 3:Dk(a,d);if((d&130023424)===d&&(b=gk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){L();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),b);break}Qk(a,uk,vk);break;case 4:Dk(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),d);break}Qk(a,uk,vk);break;case 5:Qk(a,uk,vk);break;default:throw Error(p(329));}}}Ek(a,B());return a.callbackNode===c?Hk.bind(null,a):null}\nfunction Ok(a,b){var c=tk;a.current.memoizedState.isDehydrated&&(Lk(a,b).flags|=256);a=Jk(a,b);2!==a&&(b=uk,uk=c,null!==b&&Gj(b));return a}function Gj(a){null===uk?uk=a:uk.push.apply(uk,a)}\nfunction Pk(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Dk(a,b){b&=~sk;b&=~rk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Fk(a){if(0!==(K&6))throw Error(p(327));Ik();var b=uc(a,0);if(0===(b&1))return Ek(a,B()),null;var c=Jk(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Ok(a,d))}if(1===c)throw c=qk,Lk(a,0),Dk(a,b),Ek(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Qk(a,uk,vk);Ek(a,B());return null}\nfunction Rk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Hj=B()+500,fg&&jg())}}function Sk(a){null!==xk&&0===xk.tag&&0===(K&6)&&Ik();var b=K;K|=1;var c=pk.transition,d=C;try{if(pk.transition=null,C=1,a)return a()}finally{C=d,pk.transition=c,K=b,0===(K&6)&&jg()}}function Ij(){gj=fj.current;E(fj)}\nfunction Lk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:Jh();E(Wf);E(H);Oh();break;case 5:Lh(d);break;case 4:Jh();break;case 13:E(M);break;case 19:E(M);break;case 10:Rg(d.type._context);break;case 22:case 23:Ij()}c=c.return}R=a;Y=a=wh(a.current,null);Z=gj=b;T=0;qk=null;sk=rk=hh=0;uk=tk=null;if(null!==Wg){for(b=\n0;b<Wg.length;b++)if(c=Wg[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}Wg=null}return a}\nfunction Nk(a,b){do{var c=Y;try{Qg();Ph.current=ai;if(Sh){for(var d=N.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Sh=!1}Rh=0;P=O=N=null;Th=!1;Uh=0;ok.current=null;if(null===c||null===c.return){T=1;qk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Vi(g);if(null!==y){y.flags&=-257;Wi(y,g,h,f,b);y.mode&1&&Ti(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Ti(f,l,b);uj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Vi(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Wi(J,g,h,f,b);Jg(Ki(k,h));break a}}f=k=Ki(k,h);4!==T&&(T=2);null===tk?tk=[f]:tk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Oi(f,k,b);fh(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Si||!Si.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Ri(f,h,b);fh(f,F);break a}}f=f.return}while(null!==f)}Tk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Kk(){var a=nk.current;nk.current=ai;return null===a?ai:a}\nfunction uj(){if(0===T||3===T||2===T)T=4;null===R||0===(hh&268435455)&&0===(rk&268435455)||Dk(R,Z)}function Jk(a,b){var c=K;K|=2;var d=Kk();if(R!==a||Z!==b)vk=null,Lk(a,b);do try{Uk();break}catch(e){Nk(a,e)}while(1);Qg();K=c;nk.current=d;if(null!==Y)throw Error(p(261));R=null;Z=0;return T}function Uk(){for(;null!==Y;)Vk(Y)}function Mk(){for(;null!==Y&&!cc();)Vk(Y)}function Vk(a){var b=Wk(a.alternate,a,gj);a.memoizedProps=a.pendingProps;null===b?Tk(a):Y=b;ok.current=null}\nfunction Tk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Fj(c,b,gj),null!==c){Y=c;return}}else{c=Jj(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Qk(a,b,c){var d=C,e=pk.transition;try{pk.transition=null,C=1,Xk(a,b,c,d)}finally{pk.transition=e,C=d}return null}\nfunction Xk(a,b,c,d){do Ik();while(null!==xk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===R&&(Y=R=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||wk||(wk=!0,Gk(hc,function(){Ik();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=pk.transition;pk.transition=null;\nvar g=C;C=1;var h=K;K|=4;ok.current=null;Pj(a,c);ek(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;ik(c,a,e);dc();K=h;C=g;pk.transition=f}else a.current=c;wk&&(wk=!1,xk=a,yk=e);f=a.pendingLanes;0===f&&(Si=null);mc(c.stateNode,d);Ek(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Pi)throw Pi=!1,a=Qi,Qi=null,a;0!==(yk&1)&&0!==a.tag&&Ik();f=a.pendingLanes;0!==(f&1)?a===Ak?zk++:(zk=0,Ak=a):zk=0;jg();return null}\nfunction Ik(){if(null!==xk){var a=Dc(yk),b=pk.transition,c=C;try{pk.transition=null;C=16>a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Qj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Tj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Qj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Rj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,pk.transition=b}}return!1}function Yk(a,b,c){b=Ki(c,b);b=Oi(a,b,1);a=dh(a,b,1);b=L();null!==a&&(Ac(a,1,b),Ek(a,b))}\nfunction W(a,b,c){if(3===a.tag)Yk(a,a,c);else for(;null!==b;){if(3===b.tag){Yk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Si||!Si.has(d))){a=Ki(c,a);a=Ri(b,a,1);b=dh(b,a,1);a=L();null!==b&&(Ac(b,1,a),Ek(b,a));break}}b=b.return}}\nfunction Ui(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=L();a.pingedLanes|=a.suspendedLanes&c;R===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction el(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction fl(a,b,c,d,e,f,g,h,k){a=cl(c,d,!0,a,e,f,g,h,k);a.context=el(null);c=a.current;d=L();e=lh(c);f=ch(d,e);f.callback=void 0!==b&&null!==b?b:null;dh(c,f,e);a.current.lanes=e;Ac(a,e,d);Ek(a,d);return a}function gl(a,b,c,d){var e=b.current,f=L(),g=lh(e);c=el(c);null===b.context?b.context=c:b.pendingContext=c;b=ch(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=dh(e,b,g);null!==a&&(mh(a,e,g,f),eh(a,e,g));return g}\nfunction hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function jl(a,b){il(a,b);(a=a.alternate)&&il(a,b)}function kl(){return null}var ll=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}\nnl.prototype.render=ml.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));gl(a,b,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Sk(function(){gl(null,a,null,null)});b[uf]=null}};function nl(a){this._internalRoot=a}\nnl.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function ql(){}\nfunction rl(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=hl(g);f.call(a)}}var g=fl(b,d,a,0,null,!1,!1,\"\",ql);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Sk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=hl(k);h.call(a)}}var k=cl(a,0,!1,null,null,!1,!1,\"\",ql);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Sk(function(){gl(b,k,c,d)});return k}\nfunction sl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=hl(g);h.call(a)}}gl(b,g,a,e)}else g=rl(c,b,a,e,d);return hl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Ek(b,B()),0===(K&6)&&(Hj=B()+500,jg()))}break;case 13:Sk(function(){var b=Zg(a,1);if(null!==b){var c=L();mh(b,a,1,c)}}),jl(a,1)}};\nFc=function(a){if(13===a.tag){var b=Zg(a,134217728);if(null!==b){var c=L();mh(b,a,134217728,c)}jl(a,134217728)}};Gc=function(a){if(13===a.tag){var b=lh(a),c=Zg(a,b);if(null!==c){var d=L();mh(c,a,b,d)}jl(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Rk;Hb=Sk;\nvar tl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},ul={findFiberByHostInstance:Wc,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"};\nvar vl={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||\nkl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!wl.isDisabled&&wl.supportsFiber)try{kc=wl.inject(vl),lc=wl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(b))throw Error(p(200));return dl(a,b,null,c)};exports.createRoot=function(a,b){if(!ol(a))throw Error(p(299));var c=!1,d=\"\",e=ll;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=cl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ml(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Sk(a)};exports.hydrate=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!ol(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=ll;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=fl(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new nl(b)};exports.render=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return a._reactRootContainer?(Sk(function(){sl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Rk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!pl(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,b,c,!1,d)};exports.version=\"18.2.0-next-9e3b772b8-20220608\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * scheduler.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';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.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(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=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&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\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","\nvar clean = require('to-no-case')\n\n/**\n * Export.\n */\n\nmodule.exports = toSpaceCase\n\n/**\n * Convert a `string` to space case.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction toSpaceCase(string) {\n return clean(string).replace(/[\\W_]+(.|$)/g, function (matches, match) {\n return match ? ' ' + match : ''\n }).trim()\n}\n","\n/**\n * Export.\n */\n\nmodule.exports = toNoCase\n\n/**\n * Test whether a string is camel-case.\n */\n\nvar hasSpace = /\\s/\nvar hasSeparator = /(_|-|\\.|:)/\nvar hasCamel = /([a-z][A-Z]|[A-Z][a-z])/\n\n/**\n * Remove any starting case from a `string`, like camel or snake, but keep\n * spaces and punctuation that may be important otherwise.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction toNoCase(string) {\n if (hasSpace.test(string)) return string.toLowerCase()\n if (hasSeparator.test(string)) return (unseparate(string) || string).toLowerCase()\n if (hasCamel.test(string)) return uncamelize(string).toLowerCase()\n return string.toLowerCase()\n}\n\n/**\n * Separator splitter.\n */\n\nvar separatorSplitter = /[\\W_]+(.|$)/g\n\n/**\n * Un-separate a `string`.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction unseparate(string) {\n return string.replace(separatorSplitter, function (m, next) {\n return next ? ' ' + next : ''\n })\n}\n\n/**\n * Camelcase splitter.\n */\n\nvar camelSplitter = /(.)([A-Z]+)/g\n\n/**\n * Un-camelcase a `string`.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction uncamelize(string) {\n return string.replace(camelSplitter, function (m, previous, uppers) {\n return previous + ' ' + uppers.toLowerCase().split('').join(' ')\n })\n}\n","/**\n * @license React\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';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.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:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\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","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/get-prototype-of\"), __esModule: true };","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function () { /* empty */ };\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","(typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var expressionsInterfaces = null;\n var idPrefix$1 = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n\n (function () {\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n var i;\n var len = propertyNames.length;\n\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix$1 + '__lottie_element_' + _count;\n };\n }();\n\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\n\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\n }\n\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n\n try {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), path, true);\n } catch (error) {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n }\n\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\n }();\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n\n _workerSelf.dataManager.completeData(animation);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n\n this._cbs[eventName].push(callback);\n\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\n\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm\n };\n }\n }\n\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n } // Returns any renderer that is registered\n\n\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n\n return '';\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n this.expressionsPlugin = getExpressionsPlugin();\n };\n\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\n };\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\n }\n\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\n\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\n }\n };\n\n AnimationItem.prototype.resize = function (width, height) {\n // Adding this validation for backwards compatibility in case an event object was being passed down\n var _width = typeof width === 'number' ? width : undefined;\n\n var _height = typeof height === 'number' ? height : undefined;\n\n this.renderer.updateContainerSize(_width, _height);\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === false) {\n this.isPaused = true;\n this.trigger('_pause');\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.expressionsPlugin = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {// TODO: decide how to handle catch case\n }\n };\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\n break;\n\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize; // moduleOb.start = start;\n\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\n\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\n\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\n\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\n }();\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0t0 = t0 * t0 * t0; //\n\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0t1 = t0 * t0 * t1; //\n\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1t1 = t0 * t1 * t1; //\n\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n\n var PropertyFactory = function () {\n function getProp(elem, data, type, mult, container) {\n if (data.sid) {\n data = elem.globalData.slotManager.getProp(data);\n }\n\n var p;\n\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n\n return newPath;\n };\n\n ShapePath.prototype.length = function () {\n return this._length;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n\n shapePath._length = 0;\n shapePath.c = false;\n }\n\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n\n return cloned;\n }\n\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\n\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n\n return true;\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n\n var _cw = this.d !== 3;\n\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n\n return this;\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2; // }\n\n this._identityCalculated = false;\n return this;\n }\n\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\n\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n\n function multiply(matrix) {\n var matrixProps = matrix.props;\n return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n this._identityCalculated = true;\n }\n\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\n }\n\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\n\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.multiply = multiply;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\n }\n\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize; // lottie.start = start;\n\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.12.2';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString = '';\n\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {//\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\n\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n\n shapes.push(shapePath);\n\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n\n return clonedPath;\n };\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n\n if (!this.a.effectsSequence.length) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n this.appliedTransformations = 4;\n }\n }\n\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n\n return clonedPath;\n };\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function floatEqual(a, b) {\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n }\n\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c; // Complex roots\n\n if (s < 0) return [];\n var singleRoot = -b / (2 * a); // 1 root\n\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n return [singleRoot - delta, singleRoot + delta];\n }\n\n function polynomialCoefficients(p0, p1, p2, p3) {\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n }\n\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\n\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n this.a = [coeffx[0], coeffy[0]];\n this.b = [coeffx[1], coeffy[1]];\n this.c = [coeffx[2], coeffy[2]];\n this.d = [coeffx[3], coeffy[3]];\n this.points = [p0, p1, p2, p3];\n }\n\n PolynomialBezier.prototype.point = function (t) {\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n };\n\n PolynomialBezier.prototype.derivative = function (t) {\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n };\n\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\n\n PolynomialBezier.prototype.inflectionPoints = function () {\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n if (floatZero(denom)) return [];\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n if (square < 0) return [];\n var root = Math.sqrt(square);\n\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\n };\n\n PolynomialBezier.prototype.split = function (t) {\n if (t <= 0) return [singlePoint(this.points[0]), this];\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n var p10 = lerpPoint(this.points[0], this.points[1], t);\n var p11 = lerpPoint(this.points[1], this.points[2], t);\n var p12 = lerpPoint(this.points[2], this.points[3], t);\n var p20 = lerpPoint(p10, p11, t);\n var p21 = lerpPoint(p11, p12, t);\n var p3 = lerpPoint(p20, p21, t);\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n };\n\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n } // Derivative roots to find min/max\n\n\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n for (var i = 0; i < f.length; i += 1) {\n if (f[i] > 0 && f[i] < 1) {\n var val = bez.point(f[i])[comp];\n if (val < min) min = val;else if (val > max) max = val;\n }\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\n };\n\n PolynomialBezier.prototype.boundingBox = function () {\n var bounds = this.bounds();\n return {\n left: bounds.x.min,\n right: bounds.x.max,\n top: bounds.y.min,\n bottom: bounds.y.max,\n width: bounds.x.max - bounds.x.min,\n height: bounds.y.max - bounds.y.min,\n cx: (bounds.x.max + bounds.x.min) / 2,\n cy: (bounds.y.max + bounds.y.min) / 2\n };\n };\n\n function intersectData(bez, t1, t2) {\n var box = bez.boundingBox();\n return {\n cx: box.cx,\n cy: box.cy,\n width: box.width,\n height: box.height,\n bez: bez,\n t: (t1 + t2) / 2,\n t1: t1,\n t2: t2\n };\n }\n\n function splitData(data) {\n var split = data.bez.split(0.5);\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n }\n\n function boxIntersect(b1, b2) {\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n }\n\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n intersections.push([d1.t, d2.t]);\n return;\n }\n\n var d1s = splitData(d1);\n var d2s = splitData(d2);\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n }\n\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n if (tolerance === undefined) tolerance = 2;\n if (maxRecursion === undefined) maxRecursion = 7;\n var intersections = [];\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n return intersections;\n };\n\n PolynomialBezier.shapeSegment = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n };\n\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n };\n\n function crossProduct(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n\n function lineIntersection(start1, end1, start2, end2) {\n var v1 = [start1[0], start1[1], 1];\n var v2 = [end1[0], end1[1], 1];\n var v3 = [start2[0], start2[1], 1];\n var v4 = [end2[0], end2[1], 1];\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n if (floatZero(r[2])) return null;\n return [r[0] / r[2], r[1] / r[2]];\n }\n\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n\n extendPrototype([ShapeModifier], ZigZagModifier);\n\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n };\n\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n var angO = angle - Math.PI / 2;\n var angI = angle + Math.PI / 2;\n var px = point[0] + Math.cos(angle) * direction * amplitude;\n var py = point[1] - Math.sin(angle) * direction * amplitude;\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n }\n\n function getPerpendicularVector(pt1, pt2) {\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n var rot = -Math.PI * 0.5;\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n return rotatedVector;\n }\n\n function getProjectingAngle(path, cur) {\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n var nextIndex = (cur + 1) % path.length();\n var prevPoint = path.v[prevIndex];\n var nextPoint = path.v[nextIndex];\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n }\n\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n var angle = getProjectingAngle(path, cur);\n var point = path.v[cur % path._length];\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n var nextPoint = path.v[(cur + 1) % path._length];\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n }\n\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n for (var i = 0; i < frequency; i += 1) {\n var t = (i + 1) / (frequency + 1);\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n var angle = segment.normalAngle(t);\n var point = segment.point(t);\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n direction = -direction;\n }\n\n return direction;\n }\n\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n var count = path._length;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n\n if (!path.c) {\n count -= 1;\n }\n\n if (count === 0) return clonedPath;\n var direction = -1;\n var segment = PolynomialBezier.shapeSegment(path, 0);\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n\n return clonedPath;\n };\n\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amplitude = this.amplitude.v;\n var frequency = Math.max(0, Math.round(this.frequency.v));\n var pointType = this.pointsType.v;\n\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function linearOffset(p1, p2, amount) {\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n }\n\n function offsetSegment(segment, amount) {\n var p0;\n var p1a;\n var p1b;\n var p2b;\n var p2a;\n var p3;\n var e;\n e = linearOffset(segment.points[0], segment.points[1], amount);\n p0 = e[0];\n p1a = e[1];\n e = linearOffset(segment.points[1], segment.points[2], amount);\n p1b = e[0];\n p2b = e[1];\n e = linearOffset(segment.points[2], segment.points[3], amount);\n p2a = e[0];\n p3 = e[1];\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\n if (p1 === null) p1 = p1a;\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\n if (p2 === null) p2 = p2a;\n return new PolynomialBezier(p0, p1, p2, p3);\n }\n\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0]; // Bevel\n\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n if (pointEqual(p0, p1)) return p0; // Round\n\n if (lineJoin === 2) {\n var angleOut = -seg1.tangentAngle(1);\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n return p1;\n } // Miter\n\n\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n var intersection = lineIntersection(t0, p0, p1, t1);\n\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n return intersection;\n }\n\n return p0;\n }\n\n function getIntersection(a, b) {\n var intersect = a.intersections(b);\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n if (intersect.length) return intersect[0];\n return null;\n }\n\n function pruneSegmentIntersection(a, b) {\n var outa = a.slice();\n var outb = b.slice();\n var intersect = getIntersection(a[a.length - 1], b[0]);\n\n if (intersect) {\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n outb[0] = b[0].split(intersect[1])[1];\n }\n\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n\n return [outa, outb];\n }\n\n function pruneIntersections(segments) {\n var e;\n\n for (var i = 1; i < segments.length; i += 1) {\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n segments[i - 1] = e[0];\n segments[i] = e[1];\n }\n\n if (segments.length > 1) {\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n segments[segments.length - 1] = e[0];\n segments[0] = e[1];\n }\n\n return segments;\n }\n\n function offsetSegmentSplit(segment, amount) {\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\n\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\n split = segment.split(flex[0]);\n left = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\n }\n\n split = segment.split(flex[0]);\n left = split[0];\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\n split = split[1].split(t);\n mid = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n }\n\n function OffsetPathModifier() {}\n\n extendPrototype([ShapeModifier], OffsetPathModifier);\n\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n this.lineJoin = data.lj;\n this._isAnimated = this.amount.effectsSequence.length !== 0;\n };\n\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n\n if (!inputBezier.c) {\n count -= 1;\n }\n\n var i;\n var j;\n var segment;\n var multiSegments = [];\n\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n\n if (!inputBezier.c) {\n for (i = count - 1; i >= 0; i -= 1) {\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n }\n\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n var lastPoint = null;\n var lastSeg = null;\n\n for (i = 0; i < multiSegments.length; i += 1) {\n var multiSegment = multiSegments[i];\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n lastSeg = multiSegment[multiSegment.length - 1];\n\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n } else {\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n }\n\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n lastPoint = segment.points[3];\n }\n }\n\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\n\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n var miterLimit = this.miterLimit.v;\n var lineJoin = this.lineJoin;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = []; // Hindi characters\n\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n var BLACK_FLAG_CODE_POINT = 127988;\n var CANCEL_TAG_CODE_POINT = 917631;\n var A_TAG_CODE_POINT = 917601;\n var Z_TAG_CODE_POINT = 917626;\n var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode); // Remember width with no applied web font\n\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n\n def.appendChild(tHelper);\n helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n\n if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\n this.fonts = fontData.list;\n return;\n }\n\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n\n i += 1;\n }\n\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n\n var index = _char2;\n\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index] = tHelper.measureText(_char2) / 100;\n }\n }\n\n return fontData.cache[index] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return codePoint;\n } // Skin tone modifiers\n\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n } // This codepoint may change the appearance of the preceding character.\n // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n // as a colorful image as compared to a monochrome text variant.\n\n\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n } // The regional indicator symbols are a set of 26 alphabetic Unicode\n /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n // two-letter country codes in a way that allows optional special treatment.\n\n\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n\n return false;\n } // Some Emoji implementations represent combinations of\n // two “regional indicator†letters as a single flag symbol.\n\n\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n } // Regional flags start with a BLACK_FLAG_CODE_POINT\n // folowed by 5 chars in the TAG range\n // and end with a CANCEL_TAG_CODE_POINT\n\n\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n\n var count = 0;\n index += 2;\n\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n\n count += 1;\n index += 2;\n }\n\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\n\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isFlagEmoji = isFlagEmoji;\n Font.isRegionalCode = isRegionalCode;\n Font.isCombinedCharacter = isCombinedCharacter;\n Font.isRegionalFlag = isRegionalFlag;\n Font.isVariationSelector = isVariationSelector;\n Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function SlotManager(animationData) {\n this.animationData = animationData;\n }\n\n SlotManager.prototype.getProp = function (data) {\n if (this.animationData.slots && this.animationData.slots[data.sid]) {\n return Object.assign(data, this.animationData.slots[data.sid].p);\n }\n\n return data;\n };\n\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var LayerExpressionInterface = expressionsInterfaces('layer');\n var EffectsExpressionInterface = expressionsInterfaces('effects');\n var ShapeExpressionInterface = expressionsInterfaces('shape');\n var TextExpressionInterface = expressionsInterfaces('text');\n var CompExpressionInterface = expressionsInterfaces('comp');\n this.layerInterface = LayerExpressionInterface(this);\n\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\n };\n\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n\n return null;\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.slotManager = slotFactory(animData);\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n var effectTypes = {\n TRANSFORM_EFFECT: 'transformEFfect'\n };\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function initTransform() {\n var mat = new Matrix();\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _localMatMdf: false,\n _opMdf: false,\n mat: mat,\n localMat: mat,\n localOpacity: 1\n };\n\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n\n if (this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\n\n if (this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n }\n },\n renderLocalTransform: function renderLocalTransform() {\n if (this.localTransforms) {\n var i = 0;\n var len = this.localTransforms.length;\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\n }\n\n if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n this.finalTransform._opMdf = true;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n\n localMat.multiply(this.finalTransform.mat);\n }\n\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\n\n this.finalTransform.localOpacity = localOp;\n }\n }\n },\n searchEffectTransforms: function searchEffectTransforms() {\n if (this.renderableEffectsManager) {\n var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n\n for (i = 0; i < len; i += 1) {\n this.localTransforms.push(transformEffects[i]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n\n path = createNS('path');\n\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n } // TODO move this to a factory or to a constructor\n\n\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\n };\n\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n\n return fil;\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n };\n\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n ob.maskType = false;\n }\n\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects$1[type]) {\n var Effect = registeredEffects$1[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect$1(id, effect, countsAsEffect) {\n registeredEffects$1[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n if (this.data.td) {\n this.matteMasks = {};\n var gg = createNS('g');\n gg.setAttribute('id', this.layerId);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n this.globalData.defs.appendChild(gg);\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._localMatMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n }\n\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n this.searchEffectTransforms();\n },\n getMatte: function getMatte(matteType) {\n // This should not be a common case. But for backward compatibility, we'll create the matte object.\n // It solves animations that have two consecutive layers marked as matte masks.\n // Which is an undefined behavior in AE.\n if (!this.matteMasks) {\n this.matteMasks = {};\n }\n\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n\n if (matteType === 1 || matteType === 3) {\n var masker = createNS('mask');\n masker.setAttribute('id', id);\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n masker.appendChild(useElement);\n this.globalData.defs.appendChild(masker);\n\n if (!featureSupport.maskType && matteType === 1) {\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(useElement);\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (matteType === 2) {\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', id);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId); /// /\n\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc); /// /\n\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n maskGrouper.appendChild(useElement);\n\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n maskGrouper.appendChild(gg);\n }\n\n this.globalData.defs.appendChild(maskGroup);\n }\n\n this.matteMasks[matteType] = id;\n }\n\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\n\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n\n this._mdf = !forceRender;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var iterations;\n var k;\n\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (iterations > 0) {\n mat.multiply(itemData.transformers[k].mProps.v);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\n\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\n\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\n\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n var shouldCombineNext = false;\n var currentChars = '';\n\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n if (FontManager.isRegionalFlag(text, i)) {\n currentChars = text.substr(i, 14);\n } else {\n secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (FontManager.isModifier(charCode, secondCharCode)) {\n currentChars = text.substr(i, 2);\n shouldCombine = true;\n } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n currentChars = text.substr(i, 4);\n } else {\n currentChars = text.substr(i, 2);\n }\n }\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n\n i += currentChars.length;\n }\n\n return charactersArray;\n };\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n } //\n\n\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\n }\n\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.setCurrentData(dData);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n\n mult = easer(mult);\n } // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n i = len;\n\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n this._pathData.pi = pathInfo;\n }\n\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO; //\n\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n } //\n\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n\n flag = true; // Force alignment only works with a single line for now\n\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n\n letterO = elemOpacity;\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\n\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\n ITextElement.prototype.validateText = function () {\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n var emptyShapeData = {\n shapes: []\n };\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\n\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\n };\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\n\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\n\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\n }\n\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n\n return this.bbox;\n };\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n\n return -1;\n };\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n if (elementIndex === -1) {\n return;\n }\n\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n this.buildItem(elementIndex);\n this.addPendingElement(element);\n } else {\n var matteElement = elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\n element.setMatte(matteMask);\n }\n }\n };\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\n while (i < len) {\n if (this.elements[i] === element) {\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n var matteElement = this.elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[i].tt);\n element.setMatte(matteMask);\n break;\n }\n\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n },\n width: config && config.width,\n height: config && config.height,\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer);\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n var lumaLoader = function lumaLoader() {\n var id = '__lottie_element_luma_buffer';\n var lumaBuffer = null;\n var lumaBufferCtx = null;\n var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n // Naming it solution 2 to mark the extra comment lines.\n\n /*\r\n var svgString = [\r\n '<svg xmlns=\"http://www.w3.org/2000/svg\">',\r\n '<filter id=\"' + id + '\">',\r\n '<feColorMatrix type=\"matrix\" color-interpolation-filters=\"sRGB\" values=\"',\r\n '0.3, 0.3, 0.3, 0, 0, ',\r\n '0.3, 0.3, 0.3, 0, 0, ',\r\n '0.3, 0.3, 0.3, 0, 0, ',\r\n '0.3, 0.3, 0.3, 0, 0',\r\n '\"/>',\r\n '</filter>',\r\n '</svg>',\r\n ].join('');\r\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n var url = URL.createObjectURL(blob);\r\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n\n var fil = createNS('filter');\n var matrix = createNS('feColorMatrix');\n fil.setAttribute('id', id);\n matrix.setAttribute('type', 'matrix');\n matrix.setAttribute('color-interpolation-filters', 'sRGB');\n matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n fil.appendChild(matrix);\n\n _svg.appendChild(fil);\n\n _svg.setAttribute('id', id + '_svg');\n\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n\n return _svg;\n }\n\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n\n var assetLoader = function () {\n return {\n loadLumaCanvas: lumaLoader.load,\n getLumaCanvas: lumaLoader.get,\n createCanvas: createCanvas\n };\n }();\n\n var registeredEffects = {};\n\n function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect(id, effect) {\n registeredEffects[id] = {\n effect: effect\n };\n }\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\n var operationsMap = {\n 1: 'source-in',\n 2: 'source-out',\n 3: 'source-in',\n 4: 'source-out'\n };\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n // If the layer is masked we will use two buffers to store each different states of the drawing\n // This solution is not ideal for several reason. But unfortunately, because of the recursive\n // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n // It might be challenging because the layer most likely is transformed in some way\n if (this.data.tt >= 1) {\n this.buffers = [];\n var canvasContext = this.globalData.canvasContext;\n var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas);\n var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas2);\n\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\n }\n\n this.canvasContext = this.globalData.canvasContext;\n this.transformCanvas = this.globalData.transformCanvas;\n this.renderableEffectsManager = new CVEffects(this);\n this.searchEffectTransforms();\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n clearCanvas: function clearCanvas(canvasContext) {\n canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n },\n prepareLayer: function prepareLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[0];\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n this.currentTransform = this.canvasContext.getTransform();\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n }\n },\n exitLayer: function exitLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n // that only contains the content of this layer\n // (if it is a composition, it also includes the nested layers)\n\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n if (this.data.tt >= 3 && !document._isProxy) {\n // We copy the painted mask to a buffer that has a color matrix filter applied to it\n // that applies the rgb values to the alpha channel\n var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n var lumaBufferCtx = lumaBuffer.getContext('2d');\n lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n // We use destination-over to draw the global drawing below the current layer\n\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n if (this.data.td === 1 && !forceRender) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.prepareLayer();\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n this.exitLayer();\n\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n\n renderer.restore();\n }\n }\n };\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {//\n }\n }\n\n if (isMain) {\n this.drawLayer();\n }\n };\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n\n styledShape.trNodes = shapeNodes;\n }\n };\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\n };\n\n CVTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n var renderer = this.globalData.renderer;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxFill(); // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\n\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.restore(actionFlag);\n };\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n\n this.contextData.setContext(this.canvasContext);\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n\n if (width) {\n elementWidth = width;\n elementHeight = height;\n this.canvasContext.canvas.width = elementWidth;\n this.canvasContext.canvas.height = elementHeight;\n } else {\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n } else {\n elementWidth = this.canvasContext.canvas.width;\n elementHeight = this.canvasContext.canvas.height;\n }\n\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n /* var i, len = this.elements.length;\r\n for(i=0;i<len;i+=1){\r\n if(this.elements[i] && this.elements[i].data.ty === 0){\r\n this.elements[i].resize(this.globalData.transformCanvas);\r\n }\r\n } */\n\n this.ctxTransform(this.transformCanvas.props);\n this.canvasContext.beginPath();\n this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n this.canvasContext.closePath();\n this.canvasContext.clip();\n this.renderFrame(this.renderedFrame, true);\n };\n\n CanvasRendererBase.prototype.destroy = function () {\n if (this.renderConfig.clearCanvas && this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CanvasContext() {\n this.opacity = -1;\n this.transform = createTypedArray('float32', 16);\n this.fillStyle = '';\n this.strokeStyle = '';\n this.lineWidth = '';\n this.lineCap = '';\n this.lineJoin = '';\n this.miterLimit = '';\n this.id = Math.random();\n }\n\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\n\n this._length = len;\n this.nativeContext = null;\n this.transformMat = new Matrix();\n this.currentOpacity = 1; //\n\n this.currentFillStyle = '';\n this.appliedFillStyle = ''; //\n\n this.currentStrokeStyle = '';\n this.appliedStrokeStyle = ''; //\n\n this.currentLineWidth = '';\n this.appliedLineWidth = ''; //\n\n this.currentLineCap = '';\n this.appliedLineCap = ''; //\n\n this.currentLineJoin = '';\n this.appliedLineJoin = ''; //\n\n this.appliedMiterLimit = '';\n this.currentMiterLimit = '';\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\n\n CVContextData.prototype.restore = function (forceRestore) {\n this.cArrPos -= 1;\n var currentContext = this.stack[this.cArrPos];\n var transform = currentContext.transform;\n var i;\n var arr = this.cTr.props;\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\n\n if (forceRestore) {\n this.nativeContext.restore();\n var prevStack = this.stack[this.cArrPos + 1];\n this.appliedFillStyle = prevStack.fillStyle;\n this.appliedStrokeStyle = prevStack.strokeStyle;\n this.appliedLineWidth = prevStack.lineWidth;\n this.appliedLineCap = prevStack.lineCap;\n this.appliedLineJoin = prevStack.lineJoin;\n this.appliedMiterLimit = prevStack.miterLimit;\n }\n\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\n\n this.currentFillStyle = currentContext.fillStyle;\n this.currentStrokeStyle = currentContext.strokeStyle;\n this.currentLineWidth = currentContext.lineWidth;\n this.currentLineCap = currentContext.lineCap;\n this.currentLineJoin = currentContext.lineJoin;\n this.currentMiterLimit = currentContext.miterLimit;\n };\n\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n\n var props = this.cTr.props;\n\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n\n var currentStack = this.stack[this.cArrPos];\n var i;\n\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\n\n this.cArrPos += 1;\n var newStack = this.stack[this.cArrPos];\n newStack.opacity = currentStack.opacity;\n newStack.fillStyle = currentStack.fillStyle;\n newStack.strokeStyle = currentStack.strokeStyle;\n newStack.lineWidth = currentStack.lineWidth;\n newStack.lineCap = currentStack.lineCap;\n newStack.lineJoin = currentStack.lineJoin;\n newStack.miterLimit = currentStack.miterLimit;\n };\n\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\n\n CVContextData.prototype.fillStyle = function (value) {\n if (this.stack[this.cArrPos].fillStyle !== value) {\n this.currentFillStyle = value;\n this.stack[this.cArrPos].fillStyle = value;\n }\n };\n\n CVContextData.prototype.strokeStyle = function (value) {\n if (this.stack[this.cArrPos].strokeStyle !== value) {\n this.currentStrokeStyle = value;\n this.stack[this.cArrPos].strokeStyle = value;\n }\n };\n\n CVContextData.prototype.lineWidth = function (value) {\n if (this.stack[this.cArrPos].lineWidth !== value) {\n this.currentLineWidth = value;\n this.stack[this.cArrPos].lineWidth = value;\n }\n };\n\n CVContextData.prototype.lineCap = function (value) {\n if (this.stack[this.cArrPos].lineCap !== value) {\n this.currentLineCap = value;\n this.stack[this.cArrPos].lineCap = value;\n }\n };\n\n CVContextData.prototype.lineJoin = function (value) {\n if (this.stack[this.cArrPos].lineJoin !== value) {\n this.currentLineJoin = value;\n this.stack[this.cArrPos].lineJoin = value;\n }\n };\n\n CVContextData.prototype.miterLimit = function (value) {\n if (this.stack[this.cArrPos].miterLimit !== value) {\n this.currentMiterLimit = value;\n this.stack[this.cArrPos].miterLimit = value;\n }\n };\n\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\n };\n\n CVContextData.prototype.fill = function (rule) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fill(rule);\n };\n\n CVContextData.prototype.fillRect = function (x, y, w, h) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fillRect(x, y, w, h);\n };\n\n CVContextData.prototype.stroke = function () {\n if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n this.appliedStrokeStyle = this.currentStrokeStyle;\n this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n }\n\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\n\n this.nativeContext.stroke();\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || '',\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n\n if (this.renderConfig.clearCanvas) {\n this.ctxTransform = this.contextData.transform.bind(this.contextData);\n this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n this.ctxFill = this.contextData.fill.bind(this.contextData);\n this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n this.save = this.contextData.save.bind(this.contextData);\n }\n }\n\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\n\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\n\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n\n if (len <= 1) {\n return;\n }\n\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n }\n }\n };\n\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n\n if (kfw > width) {\n width = kfw;\n }\n }\n\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\n\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n\n this.checkParenting();\n };\n\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n } // tSpan.setAttribute('visibility', 'hidden');\n\n\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent); //\n\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } //\n\n\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n this.mat.reset();\n\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n\n if (this.a) {\n var diffVector;\n\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n\n i += 1;\n }\n\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\n\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\n };\n\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData; // Mask animation\n\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n },\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\n\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\n };\n } // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n } // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n\n math['seed' + rngname] = seedrandom; //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\n\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n } // The \"g\" method returns the next (count) outputs as one number.\n\n\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n\n me.i = i;\n me.j = j;\n return r; // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n } //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\n\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n } //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n } //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n } //\n // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n } //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n var _lottieGlobal = {};\n initialize$2(BMMath);\n\n function resetFrame() {\n _lottieGlobal = {};\n }\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\n\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\n\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [r, g, b, val[3]];\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\n\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n\n return path;\n }\n\n function initiateExpression(elem, data, property) {\n // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\n\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\n\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\n }\n\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n\n default:\n return interfaceFunction.transform;\n }\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n }); // interfaceFunction.content = interfaceFunction;\n\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\n\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _sourceText;\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\n if (!_sourceText || stringValue !== _sourceText.value) {\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\n\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n\n function getInterface(type) {\n return interfaces[type] || null;\n }\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n\n return this._cachingAtTime.value;\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\n\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\n\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\n\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n\n i += 1;\n }\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n\n i += 1;\n }\n\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n if (magnitude === 0) {\n return [0, 0];\n }\n\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\n }\n\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n\n return currentValue;\n };\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n\n return feMerge;\n }\n };\n\n var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n } // Green\n\n\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n } // Blue\n\n\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n } // Alpha\n\n\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n\n while (cnt <= 256) {\n perc = cnt / 256;\n\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge); //\n }\n\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n\n _svgMatteSymbols.push(mask);\n\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n\n elem.setMatte(mask.layerId);\n };\n\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\n\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","import addMinutes from \"../addMinutes/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * const result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nexport default function subMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMinutes(dirtyDate, -amount);\n}","import addHours from \"../addHours/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * const result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\nexport default function subHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addHours(dirtyDate, -amount);\n}","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addYears from \"../addYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport default function subYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addYears(dirtyDate, -amount);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport default function getSeconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds();\n return seconds;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport default function getMinutes(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nexport default function getDate(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = date.getDate();\n return dayOfMonth;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport default function getMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n return month;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nexport default function getQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var quarter = Math.floor(date.getMonth() / 3) + 1;\n return quarter;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nexport default function getTime(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * const result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nexport default function setQuarter(dirtyDate, dirtyQuarter) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var quarter = toInteger(dirtyQuarter);\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1;\n var diff = quarter - oldQuarter;\n return setMonth(date, date.getMonth() + diff * 3);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n date.setFullYear(year);\n return date;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} - the earliest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\nexport default function min(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray;\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n if (result === undefined || result > currentDate || isNaN(currentDate.getDate())) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * const result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\nexport default function max(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray;\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n if (result === undefined || result < currentDate || isNaN(Number(currentDate))) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * { weekStartsOn: 1 }\n * )\n * //=> 2\n */\nexport default function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, options) {\n requiredArgs(2, arguments);\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, options);\n var startOfWeekRight = startOfWeek(dirtyDateRight, options);\n var timestampLeft = startOfWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekLeft);\n var timestampRight = startOfWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyLeftDate);\n var dateRight = toDate(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import startOfQuarter from \"../startOfQuarter/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same quarter (and year)?\n *\n * @description\n * Are the given dates in the same quarter (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nexport default function isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft);\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight);\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date }) // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end }) // => true\n */\nexport default function isWithinInterval(dirtyDate, interval) {\n requiredArgs(2, arguments);\n var time = toDate(dirtyDate).getTime();\n var startTime = toDate(interval.start).getTime();\n var endTime = toDate(interval.end).getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n return time >= startTime && time <= endTime;\n}","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var date;\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time);\n // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import {createElement,Component}from'react';import {findDOMNode}from'react-dom';function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}/**\n * Check whether some DOM node is our Component's node.\n */\nfunction isNodeFound(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // SVG <use/> elements do not technically reside in the rendered DOM, so\n // they do not have classList directly, but they offer a link to their\n // corresponding element, which can have classList. This extra check is for\n // that case.\n // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n\n\n if (current.correspondingElement) {\n return current.correspondingElement.classList.contains(ignoreClass);\n }\n\n return current.classList.contains(ignoreClass);\n}\n/**\n * Try to find our node in a hierarchy of nodes, returning the document\n * node as highest node if our node is not found in the path up.\n */\n\nfunction findHighest(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // If source=local then this event came from 'somewhere'\n // inside and should be ignored. We could handle this with\n // a layered approach, too, but that requires going back to\n // thinking in terms of Dom node nesting, running counter\n // to React's 'you shouldn't care about the DOM' philosophy.\n // Also cover shadowRoot node by checking current.host\n\n\n while (current.parentNode || current.host) {\n // Only check normal node without shadowRoot\n if (current.parentNode && isNodeFound(current, componentNode, ignoreClass)) {\n return true;\n }\n\n current = current.parentNode || current.host;\n }\n\n return current;\n}\n/**\n * Check if the browser scrollbar was clicked\n */\n\nfunction clickedScrollbar(evt) {\n return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;\n}// ideally will get replaced with external dep\n// when rafrex/detect-passive-events#4 and rafrex/detect-passive-events#5 get merged in\nvar testPassiveEventSupport = function testPassiveEventSupport() {\n if (typeof window === 'undefined' || typeof window.addEventListener !== 'function') {\n return;\n }\n\n var passive = false;\n var options = Object.defineProperty({}, 'passive', {\n get: function get() {\n passive = true;\n }\n });\n\n var noop = function noop() {};\n\n window.addEventListener('testPassiveEventSupport', noop, options);\n window.removeEventListener('testPassiveEventSupport', noop, options);\n return passive;\n};function autoInc(seed) {\n if (seed === void 0) {\n seed = 0;\n }\n\n return function () {\n return ++seed;\n };\n}\n\nvar uid = autoInc();var passiveEventSupport;\nvar handlersMap = {};\nvar enabledInstances = {};\nvar touchEvents = ['touchstart', 'touchmove'];\nvar IGNORE_CLASS_NAME = 'ignore-react-onclickoutside';\n/**\n * Options for addEventHandler and removeEventHandler\n */\n\nfunction getEventHandlerOptions(instance, eventName) {\n var handlerOptions = {};\n var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n\n if (isTouchEvent && passiveEventSupport) {\n handlerOptions.passive = !instance.props.preventDefault;\n }\n\n return handlerOptions;\n}\n/**\n * This function generates the HOC function that you'll use\n * in order to impart onOutsideClick listening to an\n * arbitrary component. It gets called at the end of the\n * bootstrapping code to yield an instance of the\n * onClickOutsideHOC function defined inside setupHOC().\n */\n\n\nfunction onClickOutsideHOC(WrappedComponent, config) {\n var _class, _temp;\n\n var componentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inheritsLoose(onClickOutside, _Component);\n\n function onClickOutside(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n\n _this.__outsideClickHandler = function (event) {\n if (typeof _this.__clickOutsideHandlerProp === 'function') {\n _this.__clickOutsideHandlerProp(event);\n\n return;\n }\n\n var instance = _this.getInstance();\n\n if (typeof instance.props.handleClickOutside === 'function') {\n instance.props.handleClickOutside(event);\n return;\n }\n\n if (typeof instance.handleClickOutside === 'function') {\n instance.handleClickOutside(event);\n return;\n }\n\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a handleClickOutside(event) function for processing outside click events.\");\n };\n\n _this.__getComponentNode = function () {\n var instance = _this.getInstance();\n\n if (config && typeof config.setClickOutsideRef === 'function') {\n return config.setClickOutsideRef()(instance);\n }\n\n if (typeof instance.setClickOutsideRef === 'function') {\n return instance.setClickOutsideRef();\n }\n\n return findDOMNode(instance);\n };\n\n _this.enableOnClickOutside = function () {\n if (typeof document === 'undefined' || enabledInstances[_this._uid]) {\n return;\n }\n\n if (typeof passiveEventSupport === 'undefined') {\n passiveEventSupport = testPassiveEventSupport();\n }\n\n enabledInstances[_this._uid] = true;\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n handlersMap[_this._uid] = function (event) {\n if (_this.componentNode === null) return;\n\n if (_this.props.preventDefault) {\n event.preventDefault();\n }\n\n if (_this.props.stopPropagation) {\n event.stopPropagation();\n }\n\n if (_this.props.excludeScrollbar && clickedScrollbar(event)) return;\n var current = event.composed && event.composedPath && event.composedPath().shift() || event.target;\n\n if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {\n return;\n }\n\n _this.__outsideClickHandler(event);\n };\n\n events.forEach(function (eventName) {\n document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n });\n };\n\n _this.disableOnClickOutside = function () {\n delete enabledInstances[_this._uid];\n var fn = handlersMap[_this._uid];\n\n if (fn && typeof document !== 'undefined') {\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n events.forEach(function (eventName) {\n return document.removeEventListener(eventName, fn, getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n });\n delete handlersMap[_this._uid];\n }\n };\n\n _this.getRef = function (ref) {\n return _this.instanceRef = ref;\n };\n\n _this._uid = uid();\n return _this;\n }\n /**\n * Access the WrappedComponent's instance.\n */\n\n\n var _proto = onClickOutside.prototype;\n\n _proto.getInstance = function getInstance() {\n if (WrappedComponent.prototype && !WrappedComponent.prototype.isReactComponent) {\n return this;\n }\n\n var ref = this.instanceRef;\n return ref.getInstance ? ref.getInstance() : ref;\n };\n\n /**\n * Add click listeners to the current document,\n * linked to this component's state.\n */\n _proto.componentDidMount = function componentDidMount() {\n // If we are in an environment without a DOM such\n // as shallow rendering or snapshots then we exit\n // early to prevent any unhandled errors being thrown.\n if (typeof document === 'undefined' || !document.createElement) {\n return;\n }\n\n var instance = this.getInstance();\n\n if (config && typeof config.handleClickOutside === 'function') {\n this.__clickOutsideHandlerProp = config.handleClickOutside(instance);\n\n if (typeof this.__clickOutsideHandlerProp !== 'function') {\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a function for processing outside click events specified by the handleClickOutside config option.\");\n }\n }\n\n this.componentNode = this.__getComponentNode(); // return early so we dont initiate onClickOutside\n\n if (this.props.disableOnClickOutside) return;\n this.enableOnClickOutside();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.componentNode = this.__getComponentNode();\n }\n /**\n * Remove all document's event listeners for this component\n */\n ;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.disableOnClickOutside();\n }\n /**\n * Can be called to explicitly enable event listening\n * for clicks and touches outside of this element.\n */\n ;\n\n /**\n * Pass-through render\n */\n _proto.render = function render() {\n // eslint-disable-next-line no-unused-vars\n var _this$props = this.props;\n _this$props.excludeScrollbar;\n var props = _objectWithoutPropertiesLoose(_this$props, [\"excludeScrollbar\"]);\n\n if (WrappedComponent.prototype && WrappedComponent.prototype.isReactComponent) {\n props.ref = this.getRef;\n } else {\n props.wrappedRef = this.getRef;\n }\n\n props.disableOnClickOutside = this.disableOnClickOutside;\n props.enableOnClickOutside = this.enableOnClickOutside;\n return createElement(WrappedComponent, props);\n };\n\n return onClickOutside;\n }(Component), _class.displayName = \"OnClickOutside(\" + componentName + \")\", _class.defaultProps = {\n eventTypes: ['mousedown', 'touchstart'],\n excludeScrollbar: config && config.excludeScrollbar || false,\n outsideClickIgnoreClass: IGNORE_CLASS_NAME,\n preventDefault: false,\n stopPropagation: false\n }, _class.getClass = function () {\n return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;\n }, _temp;\n}export default onClickOutsideHOC;export{IGNORE_CLASS_NAME};","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar test = {\n\t__proto__: null,\n\tfoo: {}\n};\n\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n\t// @ts-expect-error: TS errors on an inherited property for some reason\n\treturn { __proto__: test }.foo === test.foo\n\t\t&& !(test instanceof $Object);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @typedef {(...args: unknown[]) => unknown} Func */\n\n/** @type {<T extends Func = Func>(fn: T, length: number, loose?: boolean) => T} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","'use strict';\n\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionName(fn, name) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\tif (!loose || functionsHaveConfigurableNames) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'name', name, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'name', name);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = require('gud');\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n var Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n function Provider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Provider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Provider.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits = void 0;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== 'production') {\n (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n Provider.prototype.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(_react.Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n var Consumer = function (_Component2) {\n _inherits(Consumer, _Component2);\n\n function Consumer() {\n var _temp2, _this2, _ret2;\n\n _classCallCheck(this, Consumer);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n value: _this2.getValue()\n }, _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({ value: _this2.getValue() });\n }\n }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n }\n\n Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n var observedBits = this.props.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n Consumer.prototype.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n Consumer.prototype.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(_react.Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n\n\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<<anonymous>>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\nmodule.exports = exports['default'];","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule normalizeWheel\n * @typechecks\n */\n\n'use strict';\n\nvar UserAgent_DEPRECATED = require('./UserAgent_DEPRECATED');\n\nvar isEventSupported = require('./isEventSupported');\n\n\n// Reasonable defaults\nvar PIXEL_STEP = 10;\nvar LINE_HEIGHT = 40;\nvar PAGE_HEIGHT = 800;\n\n/**\n * Mouse wheel (and 2-finger trackpad) support on the web sucks. It is\n * complicated, thus this doc is long and (hopefully) detailed enough to answer\n * your questions.\n *\n * If you need to react to the mouse wheel in a predictable way, this code is\n * like your bestest friend. * hugs *\n *\n * As of today, there are 4 DOM event types you can listen to:\n *\n * 'wheel' -- Chrome(31+), FF(17+), IE(9+)\n * 'mousewheel' -- Chrome, IE(6+), Opera, Safari\n * 'MozMousePixelScroll' -- FF(3.5 only!) (2010-2013) -- don't bother!\n * 'DOMMouseScroll' -- FF(0.9.7+) since 2003\n *\n * So what to do? The is the best:\n *\n * normalizeWheel.getEventType();\n *\n * In your event callback, use this code to get sane interpretation of the\n * deltas. This code will return an object with properties:\n *\n * spinX -- normalized spin speed (use for zoom) - x plane\n * spinY -- \" - y plane\n * pixelX -- normalized distance (to pixels) - x plane\n * pixelY -- \" - y plane\n *\n * Wheel values are provided by the browser assuming you are using the wheel to\n * scroll a web page by a number of lines or pixels (or pages). Values can vary\n * significantly on different platforms and browsers, forgetting that you can\n * scroll at different speeds. Some devices (like trackpads) emit more events\n * at smaller increments with fine granularity, and some emit massive jumps with\n * linear speed or acceleration.\n *\n * This code does its best to normalize the deltas for you:\n *\n * - spin is trying to normalize how far the wheel was spun (or trackpad\n * dragged). This is super useful for zoom support where you want to\n * throw away the chunky scroll steps on the PC and make those equal to\n * the slow and smooth tiny steps on the Mac. Key data: This code tries to\n * resolve a single slow step on a wheel to 1.\n *\n * - pixel is normalizing the desired scroll delta in pixel units. You'll\n * get the crazy differences between browsers, but at least it'll be in\n * pixels!\n *\n * - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT. This\n * should translate to positive value zooming IN, negative zooming OUT.\n * This matches the newer 'wheel' event.\n *\n * Why are there spinX, spinY (or pixels)?\n *\n * - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn\n * with a mouse. It results in side-scrolling in the browser by default.\n *\n * - spinY is what you expect -- it's the classic axis of a mouse wheel.\n *\n * - I dropped spinZ/pixelZ. It is supported by the DOM 3 'wheel' event and\n * probably is by browsers in conjunction with fancy 3D controllers .. but\n * you know.\n *\n * Implementation info:\n *\n * Examples of 'wheel' event if you scroll slowly (down) by one step with an\n * average mouse:\n *\n * OS X + Chrome (mouse) - 4 pixel delta (wheelDelta -120)\n * OS X + Safari (mouse) - N/A pixel delta (wheelDelta -12)\n * OS X + Firefox (mouse) - 0.1 line delta (wheelDelta N/A)\n * Win8 + Chrome (mouse) - 100 pixel delta (wheelDelta -120)\n * Win8 + Firefox (mouse) - 3 line delta (wheelDelta -120)\n *\n * On the trackpad:\n *\n * OS X + Chrome (trackpad) - 2 pixel delta (wheelDelta -6)\n * OS X + Firefox (trackpad) - 1 pixel delta (wheelDelta N/A)\n *\n * On other/older browsers.. it's more complicated as there can be multiple and\n * also missing delta values.\n *\n * The 'wheel' event is more standard:\n *\n * http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n *\n * The basics is that it includes a unit, deltaMode (pixels, lines, pages), and\n * deltaX, deltaY and deltaZ. Some browsers provide other values to maintain\n * backward compatibility with older events. Those other values help us\n * better normalize spin speed. Example of what the browsers provide:\n *\n * | event.wheelDelta | event.detail\n * ------------------+------------------+--------------\n * Safari v5/OS X | -120 | 0\n * Safari v5/Win7 | -120 | 0\n * Chrome v17/OS X | -120 | 0\n * Chrome v17/Win7 | -120 | 0\n * IE9/Win7 | -120 | undefined\n * Firefox v4/OS X | undefined | 1\n * Firefox v4/Win7 | undefined | 3\n *\n */\nfunction normalizeWheel(/*object*/ event) /*object*/ {\n var sX = 0, sY = 0, // spinX, spinY\n pX = 0, pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in event) { sY = event.detail; }\n if ('wheelDelta' in event) { sY = -event.wheelDelta / 120; }\n if ('wheelDeltaY' in event) { sY = -event.wheelDeltaY / 120; }\n if ('wheelDeltaX' in event) { sX = -event.wheelDeltaX / 120; }\n\n // side scrolling on FF with DOMMouseScroll\n if ( 'axis' in event && event.axis === event.HORIZONTAL_AXIS ) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in event) { pY = event.deltaY; }\n if ('deltaX' in event) { pX = event.deltaX; }\n\n if ((pX || pY) && event.deltaMode) {\n if (event.deltaMode == 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) { sX = (pX < 1) ? -1 : 1; }\n if (pY && !sY) { sY = (pY < 1) ? -1 : 1; }\n\n return { spinX : sX,\n spinY : sY,\n pixelX : pX,\n pixelY : pY };\n}\n\n\n/**\n * The best combination if you prefer spinX + spinY normalization. It favors\n * the older DOMMouseScroll for Firefox, as FF does not include wheelDelta with\n * 'wheel' event, making spin speed determination impossible.\n */\nnormalizeWheel.getEventType = function() /*string*/ {\n return (UserAgent_DEPRECATED.firefox())\n ? 'DOMMouseScroll'\n : (isEventSupported('wheel'))\n ? 'wheel'\n : 'mousewheel';\n};\n\nmodule.exports = normalizeWheel;\n","/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule UserAgent_DEPRECATED\n */\n\n/**\n * Provides entirely client-side User Agent and OS detection. You should prefer\n * the non-deprecated UserAgent module when possible, which exposes our\n * authoritative server-side PHP-based detection to the client.\n *\n * Usage is straightforward:\n *\n * if (UserAgent_DEPRECATED.ie()) {\n * // IE\n * }\n *\n * You can also do version checks:\n *\n * if (UserAgent_DEPRECATED.ie() >= 7) {\n * // IE7 or better\n * }\n *\n * The browser functions will return NaN if the browser does not match, so\n * you can also do version compares the other way:\n *\n * if (UserAgent_DEPRECATED.ie() < 7) {\n * // IE6 or worse\n * }\n *\n * Note that the version is a float and may include a minor version number,\n * so you should always use range operators to perform comparisons, not\n * strict equality.\n *\n * **Note:** You should **strongly** prefer capability detection to browser\n * version detection where it's reasonable:\n *\n * http://www.quirksmode.org/js/support.html\n *\n * Further, we have a large number of mature wrapper functions and classes\n * which abstract away many browser irregularities. Check the documentation,\n * grep for things, or ask on javascript@lists.facebook.com before writing yet\n * another copy of \"event || window.event\".\n *\n */\n\nvar _populated = false;\n\n// Browsers\nvar _ie, _firefox, _opera, _webkit, _chrome;\n\n// Actual IE browser for compatibility mode\nvar _ie_real_version;\n\n// Platforms\nvar _osx, _windows, _linux, _android;\n\n// Architectures\nvar _win64;\n\n// Devices\nvar _iphone, _ipad, _native;\n\nvar _mobile;\n\nfunction _populate() {\n if (_populated) {\n return;\n }\n\n _populated = true;\n\n // To work around buggy JS libraries that can't handle multi-digit\n // version numbers, Opera 10's user agent string claims it's Opera\n // 9, then later includes a Version/X.Y field:\n //\n // Opera/9.80 (foo) Presto/2.2.15 Version/10.10\n var uas = navigator.userAgent;\n var agent = /(?:MSIE.(\\d+\\.\\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\\d+\\.\\d+))|(?:Opera(?:.+Version.|.)(\\d+\\.\\d+))|(?:AppleWebKit.(\\d+(?:\\.\\d+)?))|(?:Trident\\/\\d+\\.\\d+.*rv:(\\d+\\.\\d+))/.exec(uas);\n var os = /(Mac OS X)|(Windows)|(Linux)/.exec(uas);\n\n _iphone = /\\b(iPhone|iP[ao]d)/.exec(uas);\n _ipad = /\\b(iP[ao]d)/.exec(uas);\n _android = /Android/i.exec(uas);\n _native = /FBAN\\/\\w+;/i.exec(uas);\n _mobile = /Mobile/i.exec(uas);\n\n // Note that the IE team blog would have you believe you should be checking\n // for 'Win64; x64'. But MSDN then reveals that you can actually be coming\n // from either x64 or ia64; so ultimately, you should just check for Win64\n // as in indicator of whether you're in 64-bit IE. 32-bit IE on 64-bit\n // Windows will send 'WOW64' instead.\n _win64 = !!(/Win64/.exec(uas));\n\n if (agent) {\n _ie = agent[1] ? parseFloat(agent[1]) : (\n agent[5] ? parseFloat(agent[5]) : NaN);\n // IE compatibility mode\n if (_ie && document && document.documentMode) {\n _ie = document.documentMode;\n }\n // grab the \"true\" ie version from the trident token if available\n var trident = /(?:Trident\\/(\\d+.\\d+))/.exec(uas);\n _ie_real_version = trident ? parseFloat(trident[1]) + 4 : _ie;\n\n _firefox = agent[2] ? parseFloat(agent[2]) : NaN;\n _opera = agent[3] ? parseFloat(agent[3]) : NaN;\n _webkit = agent[4] ? parseFloat(agent[4]) : NaN;\n if (_webkit) {\n // We do not add the regexp to the above test, because it will always\n // match 'safari' only since 'AppleWebKit' appears before 'Chrome' in\n // the userAgent string.\n agent = /(?:Chrome\\/(\\d+\\.\\d+))/.exec(uas);\n _chrome = agent && agent[1] ? parseFloat(agent[1]) : NaN;\n } else {\n _chrome = NaN;\n }\n } else {\n _ie = _firefox = _opera = _chrome = _webkit = NaN;\n }\n\n if (os) {\n if (os[1]) {\n // Detect OS X version. If no version number matches, set _osx to true.\n // Version examples: 10, 10_6_1, 10.7\n // Parses version number as a float, taking only first two sets of\n // digits. If only one set of digits is found, returns just the major\n // version number.\n var ver = /(?:Mac OS X (\\d+(?:[._]\\d+)?))/.exec(uas);\n\n _osx = ver ? parseFloat(ver[1].replace('_', '.')) : true;\n } else {\n _osx = false;\n }\n _windows = !!os[2];\n _linux = !!os[3];\n } else {\n _osx = _windows = _linux = false;\n }\n}\n\nvar UserAgent_DEPRECATED = {\n\n /**\n * Check if the UA is Internet Explorer.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n ie: function() {\n return _populate() || _ie;\n },\n\n /**\n * Check if we're in Internet Explorer compatibility mode.\n *\n * @return bool true if in compatibility mode, false if\n * not compatibility mode or not ie\n */\n ieCompatibilityMode: function() {\n return _populate() || (_ie_real_version > _ie);\n },\n\n\n /**\n * Whether the browser is 64-bit IE. Really, this is kind of weak sauce; we\n * only need this because Skype can't handle 64-bit IE yet. We need to remove\n * this when we don't need it -- tracked by #601957.\n */\n ie64: function() {\n return UserAgent_DEPRECATED.ie() && _win64;\n },\n\n /**\n * Check if the UA is Firefox.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n firefox: function() {\n return _populate() || _firefox;\n },\n\n\n /**\n * Check if the UA is Opera.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n opera: function() {\n return _populate() || _opera;\n },\n\n\n /**\n * Check if the UA is WebKit.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n webkit: function() {\n return _populate() || _webkit;\n },\n\n /**\n * For Push\n * WILL BE REMOVED VERY SOON. Use UserAgent_DEPRECATED.webkit\n */\n safari: function() {\n return UserAgent_DEPRECATED.webkit();\n },\n\n /**\n * Check if the UA is a Chrome browser.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n chrome : function() {\n return _populate() || _chrome;\n },\n\n\n /**\n * Check if the user is running Windows.\n *\n * @return bool `true' if the user's OS is Windows.\n */\n windows: function() {\n return _populate() || _windows;\n },\n\n\n /**\n * Check if the user is running Mac OS X.\n *\n * @return float|bool Returns a float if a version number is detected,\n * otherwise true/false.\n */\n osx: function() {\n return _populate() || _osx;\n },\n\n /**\n * Check if the user is running Linux.\n *\n * @return bool `true' if the user's OS is some flavor of Linux.\n */\n linux: function() {\n return _populate() || _linux;\n },\n\n /**\n * Check if the user is running on an iPhone or iPod platform.\n *\n * @return bool `true' if the user is running some flavor of the\n * iPhone OS.\n */\n iphone: function() {\n return _populate() || _iphone;\n },\n\n mobile: function() {\n return _populate() || (_iphone || _ipad || _android || _mobile);\n },\n\n nativeApp: function() {\n // webviews inside of the native apps\n return _populate() || _native;\n },\n\n android: function() {\n return _populate() || _android;\n },\n\n ipad: function() {\n return _populate() || _ipad;\n }\n};\n\nmodule.exports = UserAgent_DEPRECATED;\n","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isEventSupported\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature =\n document.implementation &&\n document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM ||\n capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n","/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ExecutionEnvironment\n */\n\n/*jslint evil: true */\n\n'use strict';\n\nvar canUseDOM = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners:\n canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}","export default function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","import _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n function Setter() {\n _classCallCheck(this, Setter);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", 0);\n }\n _createClass(Setter, [{\n key: \"validate\",\n value: function validate(_utcDate, _options) {\n return true;\n }\n }]);\n return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n _inherits(ValueSetter, _Setter);\n var _super = _createSuper(ValueSetter);\n function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n var _this;\n _classCallCheck(this, ValueSetter);\n _this = _super.call(this);\n _this.value = value;\n _this.validateValue = validateValue;\n _this.setValue = setValue;\n _this.priority = priority;\n if (subPriority) {\n _this.subPriority = subPriority;\n }\n return _this;\n }\n _createClass(ValueSetter, [{\n key: \"validate\",\n value: function validate(utcDate, options) {\n return this.validateValue(utcDate, this.value, options);\n }\n }, {\n key: \"set\",\n value: function set(utcDate, flags, options) {\n return this.setValue(utcDate, flags, this.value, options);\n }\n }]);\n return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n _inherits(DateToSystemTimezoneSetter, _Setter2);\n var _super2 = _createSuper(DateToSystemTimezoneSetter);\n function DateToSystemTimezoneSetter() {\n var _this2;\n _classCallCheck(this, DateToSystemTimezoneSetter);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n return _this2;\n }\n _createClass(DateToSystemTimezoneSetter, [{\n key: \"set\",\n value: function set(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n }\n }]);\n return DateToSystemTimezoneSetter;\n}(Setter);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ValueSetter } from \"./Setter.js\";\nexport var Parser = /*#__PURE__*/function () {\n function Parser() {\n _classCallCheck(this, Parser);\n _defineProperty(this, \"incompatibleTokens\", void 0);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", void 0);\n }\n _createClass(Parser, [{\n key: \"run\",\n value: function run(dateString, token, match, options) {\n var result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n return {\n setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n rest: result.rest\n };\n }\n }, {\n key: \"validate\",\n value: function validate(_utcDate, _value, _options) {\n return true;\n }\n }]);\n return Parser;\n}();","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n _inherits(EraParser, _Parser);\n var _super = _createSuper(EraParser);\n function EraParser() {\n var _this;\n _classCallCheck(this, EraParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 140);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n return _this;\n }\n _createClass(EraParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n // A, B\n case 'GGGGG':\n return match.era(dateString, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(dateString, {\n width: 'wide'\n }) || match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return EraParser;\n}(Parser);","export var numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nexport var timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};","import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants/index.js\";\nimport { numericPatterns } from \"./constants.js\";\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest\n };\n}\nexport function parseNumericPattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: dateString.slice(1)\n };\n }\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case 'morning':\n return 4;\n case 'evening':\n return 17;\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport var YearParser = /*#__PURE__*/function (_Parser) {\n _inherits(YearParser, _Parser);\n var _super = _createSuper(YearParser);\n function YearParser() {\n var _this;\n _classCallCheck(this, YearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(YearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n switch (token) {\n case 'y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n var currentYear = date.getUTCFullYear();\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return YearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits, normalizeTwoDigitYear, mapValue } from \"../utils.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\n// Local week-numbering year\nexport var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekYearParser, _Parser);\n var _super = _createSuper(LocalWeekYearParser);\n function LocalWeekYearParser() {\n var _this;\n _classCallCheck(this, LocalWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n switch (token) {\n case 'Y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'Yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n }]);\n return LocalWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week-numbering year\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekYearParser, _Parser);\n var _super = _createSuper(ISOWeekYearParser);\n function ISOWeekYearParser() {\n var _this;\n _classCallCheck(this, ISOWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'R') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n }\n }]);\n return ISOWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ExtendedYearParser, _Parser);\n var _super = _createSuper(ExtendedYearParser);\n function ExtendedYearParser() {\n var _this;\n _classCallCheck(this, ExtendedYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ExtendedYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'u') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ExtendedYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(QuarterParser, _Parser);\n var _super = _createSuper(QuarterParser);\n function QuarterParser() {\n var _this;\n _classCallCheck(this, QuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(QuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return QuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneQuarterParser, _Parser);\n var _super = _createSuper(StandAloneQuarterParser);\n function StandAloneQuarterParser() {\n var _this;\n _classCallCheck(this, StandAloneQuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneQuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneQuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nexport var MonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(MonthParser, _Parser);\n var _super = _createSuper(MonthParser);\n function MonthParser() {\n var _this;\n _classCallCheck(this, MonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n return _this;\n }\n _createClass(MonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'MM':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return MonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, mapValue } from \"../utils.js\";\nexport var StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneMonthParser, _Parser);\n var _super = _createSuper(StandAloneMonthParser);\n function StandAloneMonthParser() {\n var _this;\n _classCallCheck(this, StandAloneMonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneMonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'LL':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneMonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\"; // Local week of year\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekParser, _Parser);\n var _super = _createSuper(LocalWeekParser);\n function LocalWeekParser() {\n var _this;\n _classCallCheck(this, LocalWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'wo':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n }\n }]);\n return LocalWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week of year\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekParser, _Parser);\n var _super = _createSuper(ISOWeekParser);\n function ISOWeekParser() {\n var _this;\n _classCallCheck(this, ISOWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'Io':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value));\n }\n }]);\n return ISOWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// Day of the month\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n _inherits(DateParser, _Parser);\n var _super = _createSuper(DateParser);\n function DateParser() {\n var _this;\n _classCallCheck(this, DateParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DateParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, dateString);\n case 'do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DateParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, isLeapYearIndex } from \"../utils.js\";\nexport var DayOfYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayOfYearParser, _Parser);\n var _super = _createSuper(DayOfYearParser);\n function DayOfYearParser() {\n var _this;\n _classCallCheck(this, DayOfYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayOfYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case 'Do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayOfYearParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function setUTCDay(dirtyDate, dirtyDay, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Day of week\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayParser, _Parser);\n var _super = _createSuper(DayParser);\n function DayParser() {\n var _this;\n _classCallCheck(this, DayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Local day of week\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalDayParser, _Parser);\n var _super = _createSuper(LocalDayParser);\n function LocalDayParser() {\n var _this;\n _classCallCheck(this, LocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n return _this;\n }\n _createClass(LocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'eo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'eee':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return LocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Stand-alone local day of week\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneLocalDayParser, _Parser);\n var _super = _createSuper(StandAloneLocalDayParser);\n function StandAloneLocalDayParser() {\n var _this;\n _classCallCheck(this, StandAloneLocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneLocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'co':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'ccc':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneLocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\"; // ISO day of week\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISODayParser, _Parser);\n var _super = _createSuper(ISODayParser);\n function ISODayParser() {\n var _this;\n _classCallCheck(this, ISODayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISODayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case 'io':\n return match.ordinalNumber(dateString, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return mapValue(match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // T\n case 'iiiii':\n return mapValue(match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tu\n case 'iiiiii':\n return mapValue(match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tuesday\n case 'iiii':\n default:\n return mapValue(match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date = setUTCISODay(date, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ISODayParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n if (day % 7 === 0) {\n day = day - 7;\n }\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMParser, _Parser);\n var _super = _createSuper(AMPMParser);\n function AMPMParser() {\n var _this;\n _classCallCheck(this, AMPMParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaaa':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMMidnightParser, _Parser);\n var _super = _createSuper(AMPMMidnightParser);\n function AMPMMidnightParser() {\n var _this;\n _classCallCheck(this, AMPMMidnightParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMMidnightParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbbb':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMMidnightParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\"; // in the morning, in the afternoon, in the evening, at night\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayPeriodParser, _Parser);\n var _super = _createSuper(DayPeriodParser);\n function DayPeriodParser() {\n var _this;\n _classCallCheck(this, DayPeriodParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n return _this;\n }\n _createClass(DayPeriodParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBBB':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return DayPeriodParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1to12Parser, _Parser);\n var _super = _createSuper(Hour1to12Parser);\n function Hour1to12Parser() {\n var _this;\n _classCallCheck(this, Hour1to12Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour1to12Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case 'ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour1to12Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0to23Parser, _Parser);\n var _super = _createSuper(Hour0to23Parser);\n function Hour0to23Parser() {\n var _this;\n _classCallCheck(this, Hour0to23Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0to23Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case 'Ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n }\n }]);\n return Hour0to23Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0To11Parser, _Parser);\n var _super = _createSuper(Hour0To11Parser);\n function Hour0To11Parser() {\n var _this;\n _classCallCheck(this, Hour0To11Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0To11Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case 'Ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour0To11Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1To24Parser, _Parser);\n var _super = _createSuper(Hour1To24Parser);\n function Hour1To24Parser() {\n var _this;\n _classCallCheck(this, Hour1To24Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n return _this;\n }\n _createClass(Hour1To24Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case 'ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n }\n }]);\n return Hour1To24Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var MinuteParser = /*#__PURE__*/function (_Parser) {\n _inherits(MinuteParser, _Parser);\n var _super = _createSuper(MinuteParser);\n function MinuteParser() {\n var _this;\n _classCallCheck(this, MinuteParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 60);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(MinuteParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, dateString);\n case 'mo':\n return match.ordinalNumber(dateString, {\n unit: 'minute'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n }\n }]);\n return MinuteParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var SecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(SecondParser, _Parser);\n var _super = _createSuper(SecondParser);\n function SecondParser() {\n var _this;\n _classCallCheck(this, SecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 50);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(SecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, dateString);\n case 'so':\n return match.ordinalNumber(dateString, {\n unit: 'second'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCSeconds(value, 0);\n return date;\n }\n }]);\n return SecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(FractionOfSecondParser, _Parser);\n var _super = _createSuper(FractionOfSecondParser);\n function FractionOfSecondParser() {\n var _this;\n _classCallCheck(this, FractionOfSecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 30);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(FractionOfSecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n var valueCallback = function valueCallback(value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMilliseconds(value);\n return date;\n }\n }]);\n return FractionOfSecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneWithZParser, _Parser);\n var _super = _createSuper(ISOTimezoneWithZParser);\n function ISOTimezoneWithZParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneWithZParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n return _this;\n }\n _createClass(ISOTimezoneWithZParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneWithZParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601)\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneParser, _Parser);\n var _super = _createSuper(ISOTimezoneParser);\n function ISOTimezoneParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n return _this;\n }\n _createClass(ISOTimezoneParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampSecondsParser, _Parser);\n var _super = _createSuper(TimestampSecondsParser);\n function TimestampSecondsParser() {\n var _this;\n _classCallCheck(this, TimestampSecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 40);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampSecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampSecondsParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampMillisecondsParser, _Parser);\n var _super = _createSuper(TimestampMillisecondsParser);\n function TimestampMillisecondsParser() {\n var _this;\n _classCallCheck(this, TimestampMillisecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 20);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampMillisecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampMillisecondsParser;\n}(Parser);","import { EraParser } from \"./EraParser.js\";\nimport { YearParser } from \"./YearParser.js\";\nimport { LocalWeekYearParser } from \"./LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./ExtendedYearParser.js\";\nimport { QuarterParser } from \"./QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./MonthParser.js\";\nimport { StandAloneMonthParser } from \"./StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./ISOWeekParser.js\";\nimport { DateParser } from \"./DateParser.js\";\nimport { DayOfYearParser } from \"./DayOfYearParser.js\";\nimport { DayParser } from \"./DayParser.js\";\nimport { LocalDayParser } from \"./LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./ISODayParser.js\";\nimport { AMPMParser } from \"./AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./Hour1To24Parser.js\";\nimport { MinuteParser } from \"./MinuteParser.js\";\nimport { SecondParser } from \"./SecondParser.js\";\nimport { FractionOfSecondParser } from \"./FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./TimestampMillisecondsParser.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nexport var parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser()\n};","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createForOfIteratorHelper from \"@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { DateToSystemTimezoneSetter } from \"./_lib/Setter.js\";\nimport { parsers } from \"./_lib/parsers/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > âš ï¸ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [new DateToSystemTimezoneSetter()];\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n var _iterator = _createForOfIteratorHelper(tokens),\n _step;\n try {\n var _loop = function _loop() {\n var token = _step.value;\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = usedTokens.find(function (usedToken) {\n return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n });\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length > 0) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n if (!parseResult) {\n return {\n v: new Date(NaN)\n };\n }\n setters.push(parseResult.setter);\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return {\n v: new Date(NaN)\n };\n }\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ret = _loop();\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n\n // Check if the remaining input contains something other than whitespace\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var setter = _step2.value;\n if (!setter.validate(utcDate, subFnOptions)) {\n return new Date(NaN);\n }\n var result = setter.set(utcDate, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n utcDate = result[0];\n assign(flags, result[1]);\n // Result is date\n } else {\n utcDate = result;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return utcDate;\n}\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > âš ï¸ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport createContext from '@hypnosphi/create-react-context';\nexport var ManagerReferenceNodeContext = createContext();\nexport var ManagerReferenceNodeSetterContext = createContext();\n\nvar Manager =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Manager, _React$Component);\n\n function Manager() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"referenceNode\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setReferenceNode\", function (newReferenceNode) {\n if (newReferenceNode && _this.referenceNode !== newReferenceNode) {\n _this.referenceNode = newReferenceNode;\n\n _this.forceUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = Manager.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.referenceNode = null;\n };\n\n _proto.render = function render() {\n return React.createElement(ManagerReferenceNodeContext.Provider, {\n value: this.referenceNode\n }, React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n value: this.setReferenceNode\n }, this.props.children));\n };\n\n return Manager;\n}(React.Component);\n\nexport { Manager as default };","/**\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 * Does a shallow equality check of two objects by comparing the reference\n * equality of each value.\n */\n\nexport var shallowEqual = function shallowEqual(objA, objB) {\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n\n if (bKeys.length !== aKeys.length) {\n return false;\n }\n\n for (var i = 0; i < bKeys.length; i++) {\n var key = aKeys[i];\n\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n\n return true;\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};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport deepEqual from \"deep-equal\";\nimport * as React from 'react';\nimport PopperJS from 'popper.js';\nimport { ManagerReferenceNodeContext } from './Manager';\nimport { unwrapArray, setRef, shallowEqual } from './utils';\nvar initialStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n opacity: 0,\n pointerEvents: 'none'\n};\nvar initialArrowStyle = {};\nexport var InnerPopper =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerPopper, _React$Component);\n\n function InnerPopper() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n data: undefined,\n placement: undefined\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperInstance\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"arrowNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setPopperNode\", function (popperNode) {\n if (!popperNode || _this.popperNode === popperNode) return;\n setRef(_this.props.innerRef, popperNode);\n _this.popperNode = popperNode;\n\n _this.updatePopperInstance();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setArrowNode\", function (arrowNode) {\n _this.arrowNode = arrowNode;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updateStateModifier\", {\n enabled: true,\n order: 900,\n fn: function fn(data) {\n var placement = data.placement;\n\n _this.setState({\n data: data,\n placement: placement\n });\n\n return data;\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptions\", function () {\n return {\n placement: _this.props.placement,\n eventsEnabled: _this.props.eventsEnabled,\n positionFixed: _this.props.positionFixed,\n modifiers: _extends({}, _this.props.modifiers, {\n arrow: _extends({}, _this.props.modifiers && _this.props.modifiers.arrow, {\n enabled: !!_this.arrowNode,\n element: _this.arrowNode\n }),\n applyStyle: {\n enabled: false\n },\n updateStateModifier: _this.updateStateModifier\n })\n };\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperStyle\", function () {\n return !_this.popperNode || !_this.state.data ? initialStyle : _extends({\n position: _this.state.data.offsets.popper.position\n }, _this.state.data.styles);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperPlacement\", function () {\n return !_this.state.data ? undefined : _this.state.placement;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getArrowStyle\", function () {\n return !_this.arrowNode || !_this.state.data ? initialArrowStyle : _this.state.data.arrowStyles;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOutOfBoundariesState\", function () {\n return _this.state.data ? _this.state.data.hide : undefined;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"destroyPopperInstance\", function () {\n if (!_this.popperInstance) return;\n\n _this.popperInstance.destroy();\n\n _this.popperInstance = null;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updatePopperInstance\", function () {\n _this.destroyPopperInstance();\n\n var _assertThisInitialize = _assertThisInitialized(_assertThisInitialized(_this)),\n popperNode = _assertThisInitialize.popperNode;\n\n var referenceElement = _this.props.referenceElement;\n if (!referenceElement || !popperNode) return;\n _this.popperInstance = new PopperJS(referenceElement, popperNode, _this.getOptions());\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scheduleUpdate\", function () {\n if (_this.popperInstance) {\n _this.popperInstance.scheduleUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = InnerPopper.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // If the Popper.js options have changed, update the instance (destroy + create)\n if (this.props.placement !== prevProps.placement || this.props.referenceElement !== prevProps.referenceElement || this.props.positionFixed !== prevProps.positionFixed || !deepEqual(this.props.modifiers, prevProps.modifiers, {\n strict: true\n })) {\n // develop only check that modifiers isn't being updated needlessly\n if (process.env.NODE_ENV === \"development\") {\n if (this.props.modifiers !== prevProps.modifiers && this.props.modifiers != null && prevProps.modifiers != null && shallowEqual(this.props.modifiers, prevProps.modifiers)) {\n console.warn(\"'modifiers' prop reference updated even though all values appear the same.\\nConsider memoizing the 'modifiers' object to avoid needless rendering.\");\n }\n }\n\n this.updatePopperInstance();\n } else if (this.props.eventsEnabled !== prevProps.eventsEnabled && this.popperInstance) {\n this.props.eventsEnabled ? this.popperInstance.enableEventListeners() : this.popperInstance.disableEventListeners();\n } // A placement difference in state means popper determined a new placement\n // apart from the props value. By the time the popper element is rendered with\n // the new position Popper has already measured it, if the place change triggers\n // a size change it will result in a misaligned popper. So we schedule an update to be sure.\n\n\n if (prevState.placement !== this.state.placement) {\n this.scheduleUpdate();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n setRef(this.props.innerRef, null);\n this.destroyPopperInstance();\n };\n\n _proto.render = function render() {\n return unwrapArray(this.props.children)({\n ref: this.setPopperNode,\n style: this.getPopperStyle(),\n placement: this.getPopperPlacement(),\n outOfBoundaries: this.getOutOfBoundariesState(),\n scheduleUpdate: this.scheduleUpdate,\n arrowProps: {\n ref: this.setArrowNode,\n style: this.getArrowStyle()\n }\n });\n };\n\n return InnerPopper;\n}(React.Component);\n\n_defineProperty(InnerPopper, \"defaultProps\", {\n placement: 'bottom',\n eventsEnabled: true,\n referenceElement: undefined,\n positionFixed: false\n});\n\nvar placements = PopperJS.placements;\nexport { placements };\nexport default function Popper(_ref) {\n var referenceElement = _ref.referenceElement,\n props = _objectWithoutPropertiesLoose(_ref, [\"referenceElement\"]);\n\n return React.createElement(ManagerReferenceNodeContext.Consumer, null, function (referenceNode) {\n return React.createElement(InnerPopper, _extends({\n referenceElement: referenceElement !== undefined ? referenceElement : referenceNode\n }, props));\n });\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport warning from 'warning';\nimport { ManagerReferenceNodeSetterContext } from './Manager';\nimport { safeInvoke, unwrapArray, setRef } from './utils';\n\nvar InnerReference =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerReference, _React$Component);\n\n function InnerReference() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"refHandler\", function (node) {\n setRef(_this.props.innerRef, node);\n safeInvoke(_this.props.setReferenceNode, node);\n });\n\n return _this;\n }\n\n var _proto = InnerReference.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n setRef(this.props.innerRef, null);\n };\n\n _proto.render = function render() {\n warning(Boolean(this.props.setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n return unwrapArray(this.props.children)({\n ref: this.refHandler\n });\n };\n\n return InnerReference;\n}(React.Component);\n\nexport default function Reference(props) {\n return React.createElement(ManagerReferenceNodeSetterContext.Consumer, null, function (setReferenceNode) {\n return React.createElement(InnerReference, _extends({\n setReferenceNode: setReferenceNode\n }, props));\n });\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport default function getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { useState, useEffect, useContext, useRef } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context';\nimport { warnOnce, loadNamespaces, hasLoadedNamespace } from './utils';\n\nvar usePrevious = function usePrevious(value, ignore) {\n var ref = useRef();\n useEffect(function () {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\n\nexport function useTranslation(ns) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nFromProps = props.i18n;\n\n var _ref = useContext(I18nContext) || {},\n i18nFromContext = _ref.i18n,\n defaultNSFromContext = _ref.defaultNS;\n\n var i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n\n var notReadyT = function notReadyT(k) {\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n\n var retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n\n if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n\n var i18nOptions = _objectSpread(_objectSpread(_objectSpread({}, getDefaults()), i18n.options.react), props);\n\n var useSuspense = i18nOptions.useSuspense,\n keyPrefix = i18nOptions.keyPrefix;\n var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(function (n) {\n return hasLoadedNamespace(n, i18n, i18nOptions);\n });\n\n function getT() {\n return i18n.getFixedT(null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n }\n\n var _useState = useState(getT),\n _useState2 = _slicedToArray(_useState, 2),\n t = _useState2[0],\n setT = _useState2[1];\n\n var joinedNS = namespaces.join();\n var previousJoinedNS = usePrevious(joinedNS);\n var isMounted = useRef(true);\n useEffect(function () {\n var bindI18n = i18nOptions.bindI18n,\n bindI18nStore = i18nOptions.bindI18nStore;\n isMounted.current = true;\n\n if (!ready && !useSuspense) {\n loadNamespaces(i18n, namespaces, function () {\n if (isMounted.current) setT(getT);\n });\n }\n\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getT);\n }\n\n function boundReset() {\n if (isMounted.current) setT(getT);\n }\n\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n return function () {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {\n return i18n.off(e, boundReset);\n });\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(function (e) {\n return i18n.store.off(e, boundReset);\n });\n };\n }, [i18n, joinedNS]);\n var isInitial = useRef(true);\n useEffect(function () {\n if (isMounted.current && !isInitial.current) {\n setT(getT);\n }\n\n isInitial.current = false;\n }, [i18n, keyPrefix]);\n var ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(function (resolve) {\n loadNamespaces(i18n, namespaces, function () {\n resolve();\n });\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"fluid\", \"as\", \"className\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n fluid: false\n};\nvar Container = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n fluid = _ref.fluid,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'container');\n var suffix = typeof fluid === 'string' ? \"-\" + fluid : '-fluid';\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, fluid ? \"\" + prefix + suffix : prefix)\n }));\n});\nContainer.displayName = 'Container';\nContainer.defaultProps = defaultProps;\nexport default Container;","import { createElement, useMemo } from 'react';\nimport { I18nContext } from './context';\nexport function I18nextProvider(_ref) {\n var i18n = _ref.i18n,\n defaultNS = _ref.defaultNS,\n children = _ref.children;\n var value = useMemo(function () {\n return {\n i18n: i18n,\n defaultNS: defaultNS\n };\n }, [i18n, defaultNS]);\n return createElement(I18nContext.Provider, {\n value: value\n }, children);\n}","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum PerformanceEvents {\r\n\r\n /**\r\n * acquireTokenByCode API (msal-browser and msal-node).\r\n * Used to acquire tokens by trading an authorization code against the token endpoint.\r\n */\r\n AcquireTokenByCode = \"acquireTokenByCode\",\r\n\r\n /**\r\n * acquireTokenByRefreshToken API (msal-browser and msal-node).\r\n * Used to renew an access token using a refresh token against the token endpoint.\r\n */\r\n AcquireTokenByRefreshToken = \"acquireTokenByRefreshToken\",\r\n\r\n /**\r\n * acquireTokenSilent API (msal-browser and msal-node).\r\n * Used to silently acquire a new access token (from the cache or the network).\r\n */\r\n AcquireTokenSilent = \"acquireTokenSilent\",\r\n\r\n /**\r\n * acquireTokenSilentAsync (msal-browser).\r\n * Internal API for acquireTokenSilent.\r\n */\r\n AcquireTokenSilentAsync = \"acquireTokenSilentAsync\",\r\n\r\n /**\r\n * acquireTokenPopup (msal-browser).\r\n * Used to acquire a new access token interactively through pop ups\r\n */\r\n AcquireTokenPopup = \"acquireTokenPopup\",\r\n\r\n /**\r\n * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\r\n * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\r\n */\r\n CryptoOptsGetPublicKeyThumbprint = \"cryptoOptsGetPublicKeyThumbprint\",\r\n\r\n /**\r\n * signJwt API in CryptoOpts class (msal-browser).\r\n * Used to signed a pop token.\r\n */\r\n CryptoOptsSignJwt = \"cryptoOptsSignJwt\",\r\n\r\n /**\r\n * acquireToken API in the SilentCacheClient class (msal-browser).\r\n * Used to read access tokens from the cache.\r\n */\r\n SilentCacheClientAcquireToken = \"silentCacheClientAcquireToken\",\r\n\r\n /**\r\n * acquireToken API in the SilentIframeClient class (msal-browser).\r\n * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\r\n */\r\n SilentIframeClientAcquireToken = \"silentIframeClientAcquireToken\",\r\n\r\n /**\r\n * acquireToken API in SilentRereshClient (msal-browser).\r\n * Used to acquire a new set of tokens from the token endpoint using a refresh token.\r\n */\r\n SilentRefreshClientAcquireToken = \"silentRefreshClientAcquireToken\",\r\n\r\n /**\r\n * ssoSilent API (msal-browser).\r\n * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\r\n */\r\n SsoSilent = \"ssoSilent\",\r\n\r\n /**\r\n * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\r\n * Used to load authority metadata for a request.\r\n */\r\n StandardInteractionClientGetDiscoveredAuthority = \"standardInteractionClientGetDiscoveredAuthority\",\r\n\r\n /**\r\n * acquireToken APIs in msal-browser.\r\n * Used to make an /authorize endpoint call with native brokering enabled.\r\n */\r\n FetchAccountIdWithNativeBroker = \"fetchAccountIdWithNativeBroker\",\r\n\r\n /**\r\n * acquireToken API in NativeInteractionClient class (msal-browser).\r\n * Used to acquire a token from Native component when native brokering is enabled.\r\n */\r\n NativeInteractionClientAcquireToken = \"nativeInteractionClientAcquireToken\",\r\n /**\r\n * Time spent creating default headers for requests to token endpoint\r\n */\r\n BaseClientCreateTokenRequestHeaders = \"baseClientCreateTokenRequestHeaders\",\r\n /**\r\n * Used to measure the time taken for completing embedded-broker handshake (PW-Broker).\r\n */\r\n BrokerHandhshake = \"brokerHandshake\",\r\n /**\r\n * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) .\r\n */\r\n AcquireTokenByRefreshTokenInBroker = \"acquireTokenByRefreshTokenInBroker\",\r\n /**\r\n * Time taken for token acquisition by broker\r\n */\r\n AcquireTokenByBroker = \"acquireTokenByBroker\",\r\n\r\n /**\r\n * Time spent on the network for refresh token acquisition\r\n */\r\n RefreshTokenClientExecuteTokenRequest = \"refreshTokenClientExecuteTokenRequest\",\r\n\r\n /**\r\n * Time taken for acquiring refresh token , records RT size\r\n */\r\n RefreshTokenClientAcquireToken = \"refreshTokenClientAcquireToken\",\r\n\r\n /**\r\n * Time taken for acquiring cached refresh token\r\n */\r\n RefreshTokenClientAcquireTokenWithCachedRefreshToken = \"refreshTokenClientAcquireTokenWithCachedRefreshToken\",\r\n\r\n /**\r\n * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientAcquireTokenByRefreshToken = \"refreshTokenClientAcquireTokenByRefreshToken\",\r\n\r\n /**\r\n * Helper function to create token request body in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientCreateTokenRequestBody = \"refreshTokenClientCreateTokenRequestBody\",\r\n\r\n /**\r\n * acquireTokenFromCache (msal-browser).\r\n * Internal API for acquiring token from cache\r\n */\r\n AcquireTokenFromCache = \"acquireTokenFromCache\",\r\n\r\n /**\r\n * acquireTokenBySilentIframe (msal-browser).\r\n * Internal API for acquiring token by silent Iframe\r\n */\r\n AcquireTokenBySilentIframe = \"acquireTokenBySilentIframe\",\r\n\r\n /**\r\n * Internal API for initializing base request in BaseInteractionClient (msal-browser)\r\n */\r\n InitializeBaseRequest = \"initializeBaseRequest\",\r\n\r\n /**\r\n * Internal API for initializing silent request in SilentCacheClient (msal-browser)\r\n */\r\n InitializeSilentRequest = \"initializeSilentRequest\",\r\n\r\n InitializeClientApplication = \"initializeClientApplication\",\r\n\r\n /**\r\n * Helper function in SilentIframeClient class (msal-browser).\r\n */\r\n SilentIframeClientTokenHelper = \"silentIframeClientTokenHelper\",\r\n\r\n /**\r\n * SilentHandler\r\n */\r\n SilentHandlerInitiateAuthRequest = \"silentHandlerInitiateAuthRequest\",\r\n SilentHandlerMonitorIframeForHash = \"silentHandlerMonitorIframeForHash\",\r\n SilentHandlerLoadFrame = \"silentHandlerLoadFrame\",\r\n\r\n /**\r\n * Helper functions in StandardInteractionClient class (msal-browser)\r\n */\r\n StandardInteractionClientCreateAuthCodeClient = \"standardInteractionClientCreateAuthCodeClient\",\r\n StandardInteractionClientGetClientConfiguration = \"standardInteractionClientGetClientConfiguration\",\r\n StandardInteractionClientInitializeAuthorizationRequest = \"standardInteractionClientInitializeAuthorizationRequest\",\r\n StandardInteractionClientInitializeAuthorizationCodeRequest = \"standardInteractionClientInitializeAuthorizationCodeRequest\",\r\n\r\n /**\r\n * getAuthCodeUrl API (msal-browser and msal-node).\r\n */\r\n GetAuthCodeUrl = \"getAuthCodeUrl\",\r\n\r\n /**\r\n * Functions from InteractionHandler (msal-browser)\r\n */\r\n HandleCodeResponseFromServer = \"handleCodeResponseFromServer\",\r\n HandleCodeResponseFromHash = \"handleCodeResponseFromHash\",\r\n UpdateTokenEndpointAuthority = \"updateTokenEndpointAuthority\",\r\n\r\n /**\r\n * APIs in Authorization Code Client (msal-common)\r\n */\r\n AuthClientAcquireToken = \"authClientAcquireToken\",\r\n AuthClientExecuteTokenRequest = \"authClientExecuteTokenRequest\",\r\n AuthClientCreateTokenRequestBody = \"authClientCreateTokenRequestBody\",\r\n AuthClientCreateQueryString = \"authClientCreateQueryString\",\r\n\r\n /**\r\n * Generate functions in PopTokenGenerator (msal-common)\r\n */\r\n PopTokenGenerateCnf = \"popTokenGenerateCnf\",\r\n PopTokenGenerateKid = \"popTokenGenerateKid\",\r\n\r\n /**\r\n * handleServerTokenResponse API in ResponseHandler (msal-common)\r\n */\r\n HandleServerTokenResponse = \"handleServerTokenResponse\",\r\n\r\n /**\r\n * Authority functions\r\n */\r\n AuthorityFactoryCreateDiscoveredInstance = \"authorityFactoryCreateDiscoveredInstance\",\r\n AuthorityResolveEndpointsAsync = \"authorityResolveEndpointsAsync\",\r\n AuthorityGetCloudDiscoveryMetadataFromNetwork = \"authorityGetCloudDiscoveryMetadataFromNetwork\",\r\n AuthorityUpdateCloudDiscoveryMetadata = \"authorityUpdateCloudDiscoveryMetadata\",\r\n AuthorityGetEndpointMetadataFromNetwork = \"authorityGetEndpointMetadataFromNetwork\",\r\n AuthorityUpdateEndpointMetadata = \"authorityUpdateEndpointMetadata\",\r\n AuthorityUpdateMetadataWithRegionalInformation = \"authorityUpdateMetadataWithRegionalInformation\",\r\n\r\n /**\r\n * Region Discovery functions\r\n */\r\n RegionDiscoveryDetectRegion = \"regionDiscoveryDetectRegion\",\r\n RegionDiscoveryGetRegionFromIMDS = \"regionDiscoveryGetRegionFromIMDS\",\r\n RegionDiscoveryGetCurrentVersion = \"regionDiscoveryGetCurrentVersion\",\r\n\r\n AcquireTokenByCodeAsync = \"acquireTokenByCodeAsync\",\r\n\r\n GetEndpointMetadataFromNetwork = \"getEndpointMetadataFromNetwork\",\r\n GetCloudDiscoveryMetadataFromNetworkMeasurement = \"getCloudDiscoveryMetadataFromNetworkMeasurement\",\r\n\r\n HandleRedirectPromiseMeasurement= \"handleRedirectPromiseMeasurement\",\r\n\r\n UpdateCloudDiscoveryMetadataMeasurement = \"updateCloudDiscoveryMetadataMeasurement\",\r\n\r\n UsernamePasswordClientAcquireToken = \"usernamePasswordClientAcquireToken\",\r\n\r\n NativeMessageHandlerHandshake = \"nativeMessageHandlerHandshake\",\r\n\r\n /**\r\n * Cache operations\r\n */\r\n ClearTokensAndKeysWithClaims = \"clearTokensAndKeysWithClaims\",\r\n}\r\n\r\n/**\r\n * State of the performance event.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum PerformanceEventStatus {\r\n NotStarted,\r\n InProgress,\r\n Completed\r\n}\r\n\r\n/**\r\n * Fields whose value will not change throughout a request\r\n */\r\nexport type StaticFields = {\r\n /**\r\n * The Silent Token Cache Lookup Policy\r\n *\r\n * @type {?(number | undefined)}\r\n */\r\n cacheLookupPolicy?: number | undefined,\r\n\r\n /**\r\n * Size of the id token\r\n *\r\n * @type {number}\r\n */\r\n idTokenSize?: number,\r\n\r\n /**\r\n *\r\n * Size of the access token\r\n *\r\n * @type {number}\r\n */\r\n\r\n accessTokenSize?: number,\r\n\r\n /**\r\n *\r\n * Size of the refresh token\r\n *\r\n * @type {number}\r\n */\r\n\r\n refreshTokenSize?: number | undefined,\r\n\r\n /**\r\n * Application name as specified by the app.\r\n *\r\n * @type {?string}\r\n */\r\n appName?: string,\r\n\r\n /**\r\n * Application version as specified by the app.\r\n *\r\n * @type {?string}\r\n */\r\n appVersion?: string,\r\n\r\n /**\r\n * The following are fields that may be emitted in native broker scenarios\r\n */\r\n extensionId?: string,\r\n extensionVersion?: string\r\n matsBrokerVersion?: string;\r\n matsAccountJoinOnStart?: string;\r\n matsAccountJoinOnEnd?: string;\r\n matsDeviceJoin?: string;\r\n matsPromptBehavior?: string;\r\n matsApiErrorCode?: number;\r\n matsUiVisible?: boolean;\r\n matsSilentCode?: number;\r\n matsSilentBiSubCode?: number;\r\n matsSilentMessage?: string;\r\n matsSilentStatus?: number;\r\n matsHttpStatus?: number\r\n matsHttpEventCount?: number;\r\n httpVerToken?: string;\r\n httpVerAuthority?: string;\r\n\r\n /**\r\n * Native broker fields\r\n */\r\n allowNativeBroker?: boolean;\r\n extensionInstalled?: boolean;\r\n extensionHandshakeTimeoutMs?: number;\r\n extensionHandshakeTimedOut?: boolean;\r\n};\r\n\r\n/**\r\n * Fields whose value may change throughout a request\r\n */\r\nexport type Counters = {\r\n visibilityChangeCount?: number;\r\n incompleteSubsCount?: number;\r\n /**\r\n * Amount of times queued in the JS event queue.\r\n *\r\n * @type {?number}\r\n */\r\n queuedCount?: number\r\n /**\r\n * Amount of manually completed queue events.\r\n *\r\n * @type {?number}\r\n */\r\n queuedManuallyCompletedCount?: number;\r\n};\r\n\r\nexport type SubMeasurement = {\r\n name: PerformanceEvents,\r\n startTimeMs: number\r\n};\r\n\r\n/**\r\n * Performance measurement taken by the library, including metadata about the request and application.\r\n *\r\n * @export\r\n * @typedef {PerformanceEvent}\r\n */\r\nexport type PerformanceEvent = StaticFields & Counters & {\r\n /**\r\n * Unique id for the event\r\n *\r\n * @type {string}\r\n */\r\n eventId: string,\r\n\r\n /**\r\n * State of the perforance measure.\r\n *\r\n * @type {PerformanceEventStatus}\r\n */\r\n status: PerformanceEventStatus,\r\n\r\n /**\r\n * Login authority used for the request\r\n *\r\n * @type {string}\r\n */\r\n authority: string,\r\n\r\n /**\r\n * Client id for the application\r\n *\r\n * @type {string}\r\n */\r\n clientId: string\r\n\r\n /**\r\n * Correlation ID used for the request\r\n *\r\n * @type {string}\r\n */\r\n correlationId: string,\r\n\r\n /**\r\n * End-to-end duration in milliseconds.\r\n * @date 3/22/2022 - 3:40:05 PM\r\n *\r\n * @type {number}\r\n */\r\n durationMs?: number,\r\n\r\n /**\r\n * Visibility of the page when the event completed.\r\n * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API\r\n *\r\n * @type {?(string | null)}\r\n */\r\n endPageVisibility?: string | null,\r\n\r\n /**\r\n * Whether the result was retrieved from the cache.\r\n *\r\n * @type {(boolean | null)}\r\n */\r\n fromCache?: boolean | null,\r\n\r\n /**\r\n * Event name (usually in the form of classNameFunctionName)\r\n *\r\n * @type {PerformanceEvents}\r\n */\r\n name: PerformanceEvents,\r\n\r\n /**\r\n * Visibility of the page when the event completed.\r\n * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API\r\n *\r\n * @type {?(string | null)}\r\n */\r\n startPageVisibility?: string | null,\r\n\r\n /**\r\n * Unix millisecond timestamp when the event was initiated.\r\n *\r\n * @type {number}\r\n */\r\n startTimeMs: number,\r\n\r\n /**\r\n * Whether or the operation completed successfully.\r\n *\r\n * @type {(boolean | null)}\r\n */\r\n success?: boolean | null,\r\n\r\n /**\r\n * Add specific error code in case of failure\r\n *\r\n * @type {string}\r\n */\r\n errorCode?: string,\r\n\r\n /**\r\n * Add specific sub error code in case of failure\r\n *\r\n * @type {string}\r\n */\r\n subErrorCode?: string,\r\n\r\n /**\r\n * Name of the library used for the operation.\r\n *\r\n * @type {string}\r\n */\r\n libraryName: string,\r\n\r\n /**\r\n * Version of the library used for the operation.\r\n *\r\n * @type {string}\r\n */\r\n libraryVersion: string,\r\n\r\n /**\r\n * Whether the response is from a native component (e.g., WAM)\r\n *\r\n * @type {?boolean}\r\n */\r\n isNativeBroker?: boolean,\r\n\r\n /**\r\n * Request ID returned from the response\r\n *\r\n * @type {?string}\r\n */\r\n requestId?: string\r\n\r\n /**\r\n * Cache lookup policy\r\n *\r\n * @type {?number}\r\n */\r\n cacheLookupPolicy?: number | undefined,\r\n\r\n /**\r\n * Amount of time spent in the JS queue in milliseconds.\r\n *\r\n * @type {?number}\r\n */\r\n queuedTimeMs?: number,\r\n\r\n /**\r\n * Sub-measurements for internal use. To be deleted before flushing.\r\n */\r\n incompleteSubMeasurements?: Map<string, SubMeasurement>\r\n};\r\n\r\nexport const IntFields: ReadonlySet<string> = new Set([\r\n \"accessTokenSize\",\r\n \"durationMs\",\r\n \"idTokenSize\",\r\n \"matsSilentStatus\",\r\n \"matsHttpStatus\",\r\n \"refreshTokenSize\",\r\n \"queuedTimeMs\",\r\n \"startTimeMs\",\r\n \"status\",\r\n]);\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Logger } from \"@azure/msal-common\";\r\nimport { CachedKeyPair } from \"../crypto/CryptoOps\";\r\nimport { AsyncMemoryStorage } from \"./AsyncMemoryStorage\";\r\n\r\nexport enum CryptoKeyStoreNames {\r\n asymmetricKeys = \"asymmetricKeys\",\r\n symmetricKeys = \"symmetricKeys\"\r\n}\r\n/**\r\n * MSAL CryptoKeyStore DB Version 2\r\n */\r\nexport class CryptoKeyStore {\r\n public asymmetricKeys: AsyncMemoryStorage<CachedKeyPair>;\r\n public symmetricKeys: AsyncMemoryStorage<CryptoKey>;\r\n public logger: Logger;\r\n\r\n constructor(logger: Logger){\r\n this.logger = logger;\r\n this.asymmetricKeys = new AsyncMemoryStorage<CachedKeyPair>(this.logger, CryptoKeyStoreNames.asymmetricKeys);\r\n this.symmetricKeys = new AsyncMemoryStorage<CryptoKey>(this.logger, CryptoKeyStoreNames.symmetricKeys);\r\n }\r\n\r\n async clear(): Promise<boolean> {\r\n // Delete in-memory keystores\r\n this.asymmetricKeys.clearInMemory();\r\n\t this.symmetricKeys.clearInMemory();\r\n\t\t\r\n /**\r\n * There is only one database, so calling clearPersistent on asymmetric keystore takes care of\r\n * every persistent keystore\r\n */\r\n try {\r\n await this.asymmetricKeys.clearPersistent();\r\n return true;\r\n } catch (e) {\r\n if (e instanceof Error) {\r\n this.logger.error(`Clearing keystore failed with error: ${e.message}`);\r\n } else {\r\n this.logger.error(\"Clearing keystore failed with unknown error\");\r\n }\r\n \r\n return false;\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"./AuthError\";\r\n\r\n/**\r\n * Error thrown when there is an error with the server code, for example, unavailability.\r\n */\r\nexport class ServerError extends AuthError {\r\n\r\n constructor(errorCode?: string, errorMessage?: string, subError?: string) {\r\n super(errorCode, errorMessage, subError);\r\n this.name = \"ServerError\";\r\n\r\n Object.setPrototypeOf(this, ServerError.prototype);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"./AuthError\";\r\n\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const JoseHeaderErrorMessage = {\r\n missingKidError: {\r\n code: \"missing_kid_error\",\r\n desc: \"The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.\"\r\n },\r\n missingAlgError: {\r\n code: \"missing_alg_error\",\r\n desc: \"The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.\"\r\n },\r\n};\r\n\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nexport class JoseHeaderError extends AuthError {\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n this.name = \"JoseHeaderError\";\r\n\r\n Object.setPrototypeOf(this, JoseHeaderError.prototype);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when keyId isn't set on JOSE header.\r\n */\r\n static createMissingKidError(): JoseHeaderError {\r\n return new JoseHeaderError(JoseHeaderErrorMessage.missingKidError.code, JoseHeaderErrorMessage.missingKidError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when algorithm isn't set on JOSE header.\r\n */\r\n static createMissingAlgError(): JoseHeaderError {\r\n return new JoseHeaderError(JoseHeaderErrorMessage.missingAlgError.code, JoseHeaderErrorMessage.missingAlgError.desc);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { JoseHeaderError } from \"../error/JoseHeaderError\";\r\nimport { JsonTypes } from \"../utils/Constants\";\r\n\r\nexport type JoseHeaderOptions = {\r\n typ?: JsonTypes,\r\n alg?: string,\r\n kid?: string\r\n};\r\n\r\nexport class JoseHeader {\r\n public typ?: JsonTypes;\r\n public alg?: string;\r\n public kid?: string;\r\n\r\n constructor (options: JoseHeaderOptions) {\r\n this.typ = options.typ;\r\n this.alg = options.alg;\r\n this.kid = options.kid;\r\n }\r\n\r\n /**\r\n * Builds SignedHttpRequest formatted JOSE Header from the\r\n * JOSE Header options provided or previously set on the object and returns\r\n * the stringified header object.\r\n * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding.\r\n * @param shrHeaderOptions \r\n * @returns \r\n */\r\n static getShrHeaderString(shrHeaderOptions: JoseHeaderOptions): string {\r\n // KeyID is required on the SHR header\r\n if (!shrHeaderOptions.kid) {\r\n throw JoseHeaderError.createMissingKidError();\r\n }\r\n\r\n // Alg is required on the SHR header\r\n if (!shrHeaderOptions.alg) {\r\n throw JoseHeaderError.createMissingAlgError();\r\n }\r\n\r\n const shrHeader = new JoseHeader({\r\n // Access Token PoP headers must have type pop, but the type header can be overriden for special cases\r\n typ: shrHeaderOptions.typ || JsonTypes.Pop,\r\n kid: shrHeaderOptions.kid,\r\n alg: shrHeaderOptions.alg\r\n });\r\n\r\n return JSON.stringify(shrHeader);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Utility class for math specific functions in browser.\r\n */\r\nexport class MathUtils {\r\n\r\n /**\r\n * Decimal to Hex\r\n *\r\n * @param num\r\n */\r\n static decimalToHex(num: number): string {\r\n let hex: string = num.toString(16);\r\n while (hex.length < 2) {\r\n hex = \"0\" + hex;\r\n }\r\n return hex;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants , IGuidGenerator } from \"@azure/msal-common\";\r\nimport { MathUtils } from \"../utils/MathUtils\";\r\nimport { BrowserCrypto } from \"./BrowserCrypto\";\r\nexport class GuidGenerator implements IGuidGenerator {\r\n\r\n // browser crypto object used to generate random values\r\n private cryptoObj: BrowserCrypto;\r\n\r\n constructor(cryptoObj: BrowserCrypto) {\r\n this.cryptoObj = cryptoObj;\r\n }\r\n\r\n /*\r\n * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or\r\n * pseudo-random numbers.\r\n * The algorithm is as follows:\r\n * Set the two most significant bits (bits 6 and 7) of the\r\n * clock_seq_hi_and_reserved to zero and one, respectively.\r\n * Set the four most significant bits (bits 12 through 15) of the\r\n * time_hi_and_version field to the 4-bit version number from\r\n * Section 4.1.3. Version4\r\n * Set all the other bits to randomly (or pseudo-randomly) chosen\r\n * values.\r\n * UUID = time-low \"-\" time-mid \"-\"time-high-and-version \"-\"clock-seq-reserved and low(2hexOctet)\"-\" node\r\n * time-low = 4hexOctet\r\n * time-mid = 2hexOctet\r\n * time-high-and-version = 2hexOctet\r\n * clock-seq-and-reserved = hexOctet:\r\n * clock-seq-low = hexOctet\r\n * node = 6hexOctet\r\n * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\r\n * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10\r\n * y values are 8, 9, A, B\r\n */\r\n generateGuid(): string {\r\n try {\r\n const buffer: Uint8Array = new Uint8Array(16);\r\n this.cryptoObj.getRandomValues(buffer);\r\n\r\n // buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number).\r\n buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.\r\n buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = \"4\".\r\n\r\n // buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.\r\n buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.\r\n buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.\r\n\r\n return MathUtils.decimalToHex(buffer[0]) + MathUtils.decimalToHex(buffer[1])\r\n + MathUtils.decimalToHex(buffer[2]) + MathUtils.decimalToHex(buffer[3])\r\n + \"-\" + MathUtils.decimalToHex(buffer[4]) + MathUtils.decimalToHex(buffer[5])\r\n + \"-\" + MathUtils.decimalToHex(buffer[6]) + MathUtils.decimalToHex(buffer[7])\r\n + \"-\" + MathUtils.decimalToHex(buffer[8]) + MathUtils.decimalToHex(buffer[9])\r\n + \"-\" + MathUtils.decimalToHex(buffer[10]) + MathUtils.decimalToHex(buffer[11])\r\n + MathUtils.decimalToHex(buffer[12]) + MathUtils.decimalToHex(buffer[13])\r\n + MathUtils.decimalToHex(buffer[14]) + MathUtils.decimalToHex(buffer[15]);\r\n }\r\n catch (err) {\r\n const guidHolder: string = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";\r\n const hex: string = \"0123456789abcdef\";\r\n let r: number = 0;\r\n let guidResponse: string = Constants.EMPTY_STRING;\r\n for (let i: number = 0; i < 36; i++) {\r\n if (guidHolder[i] !== \"-\" && guidHolder[i] !== \"4\") {\r\n // each x and y needs to be random\r\n r = Math.random() * 16 | 0;\r\n }\r\n if (guidHolder[i] === \"x\") {\r\n guidResponse += hex[r];\r\n } else if (guidHolder[i] === \"y\") {\r\n // clock-seq-and-reserved first hex is filtered and remaining hex values are random\r\n r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??\r\n r |= 0x8; // set pos 3 to 1 as 1???\r\n guidResponse += hex[r];\r\n } else {\r\n guidResponse += guidHolder[i];\r\n }\r\n }\r\n return guidResponse;\r\n }\r\n }\r\n\r\n /**\r\n * verifies if a string is GUID\r\n * @param guid\r\n */\r\n isGuid(guid: string): boolean {\r\n const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\r\n return regexGuid.test(guid);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants } from \"@azure/msal-common\";\r\n\r\n/**\r\n * Utility functions for strings in a browser. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nexport class BrowserStringUtils {\r\n\r\n /**\r\n * Converts string to Uint8Array\r\n * @param sDOMStr \r\n */\r\n static stringToUtf8Arr (sDOMStr: string): Uint8Array {\r\n let nChr;\r\n let nArrLen = 0;\r\n const nStrLen = sDOMStr.length;\r\n /* mapping... */\r\n for (let nMapIdx = 0; nMapIdx < nStrLen; nMapIdx++) {\r\n nChr = sDOMStr.charCodeAt(nMapIdx);\r\n nArrLen += nChr < 0x80 ? 1 : nChr < 0x800 ? 2 : nChr < 0x10000 ? 3 : nChr < 0x200000 ? 4 : nChr < 0x4000000 ? 5 : 6;\r\n }\r\n\r\n const aBytes = new Uint8Array(nArrLen);\r\n\r\n /* transcription... */\r\n\r\n for (let nIdx = 0, nChrIdx = 0; nIdx < nArrLen; nChrIdx++) {\r\n nChr = sDOMStr.charCodeAt(nChrIdx);\r\n if (nChr < 128) {\r\n /* one byte */\r\n aBytes[nIdx++] = nChr;\r\n } else if (nChr < 0x800) {\r\n /* two bytes */\r\n aBytes[nIdx++] = 192 + (nChr >>> 6);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else if (nChr < 0x10000) {\r\n /* three bytes */\r\n aBytes[nIdx++] = 224 + (nChr >>> 12);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else if (nChr < 0x200000) {\r\n /* four bytes */\r\n aBytes[nIdx++] = 240 + (nChr >>> 18);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else if (nChr < 0x4000000) {\r\n /* five bytes */\r\n aBytes[nIdx++] = 248 + (nChr >>> 24);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else /* if (nChr <= 0x7fffffff) */ {\r\n /* six bytes */\r\n aBytes[nIdx++] = 252 + (nChr >>> 30);\r\n aBytes[nIdx++] = 128 + (nChr >>> 24 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n }\r\n\r\n return aBytes; \r\n }\r\n\r\n /**\r\n * Converst string to ArrayBuffer\r\n * @param dataString \r\n */\r\n static stringToArrayBuffer(dataString: string): ArrayBuffer {\r\n const data = new ArrayBuffer(dataString.length);\r\n const dataView = new Uint8Array(data);\r\n for (let i: number = 0; i < dataString.length; i++) {\r\n dataView[i] = dataString.charCodeAt(i);\r\n }\r\n return data;\r\n }\r\n\r\n /**\r\n * Converts Uint8Array to a string\r\n * @param aBytes \r\n */\r\n static utf8ArrToString (aBytes: Uint8Array): string {\r\n let sView = Constants.EMPTY_STRING;\r\n for (let nPart, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nPart = aBytes[nIdx];\r\n sView += String.fromCharCode(\r\n nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */\r\n /* (nPart - 252 << 30) may be not so safe in ECMAScript! So...: */\r\n (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */\r\n (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */\r\n (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */\r\n (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */\r\n (nPart - 192 << 6) + aBytes[++nIdx] - 128\r\n : /* nPart < 127 ? */ /* one byte */\r\n nPart\r\n );\r\n }\r\n return sView;\r\n }\r\n\r\n /**\r\n * Returns stringified jwk.\r\n * @param jwk \r\n */\r\n static getSortedObjectString(obj: object): string {\r\n return JSON.stringify(obj, Object.keys(obj).sort());\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants } from \"@azure/msal-common\";\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\n\r\n/**\r\n * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nexport class Base64Encode {\r\n \r\n /**\r\n * Returns URL Safe b64 encoded string from a plaintext string.\r\n * @param input \r\n */\r\n urlEncode(input: string): string {\r\n return encodeURIComponent(this.encode(input)\r\n .replace(/=/g, Constants.EMPTY_STRING)\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\"));\r\n }\r\n\r\n /**\r\n * Returns URL Safe b64 encoded string from an int8Array.\r\n * @param inputArr \r\n */\r\n urlEncodeArr(inputArr: Uint8Array): string {\r\n return this.base64EncArr(inputArr)\r\n .replace(/=/g, Constants.EMPTY_STRING)\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\");\r\n }\r\n\r\n /**\r\n * Returns b64 encoded string from plaintext string.\r\n * @param input \r\n */\r\n encode(input: string): string {\r\n const inputUtf8Arr = BrowserStringUtils.stringToUtf8Arr(input);\r\n return this.base64EncArr(inputUtf8Arr);\r\n }\r\n\r\n /**\r\n * Base64 encode byte array\r\n * @param aBytes \r\n */\r\n private base64EncArr(aBytes: Uint8Array): string { \r\n const eqLen = (3 - (aBytes.length % 3)) % 3;\r\n let sB64Enc = Constants.EMPTY_STRING;\r\n \r\n for (let nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nMod3 = nIdx % 3;\r\n /* Uncomment the following line in order to split the output in lines 76-character long: */\r\n /*\r\n *if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += \"\\r\\n\"; }\r\n */\r\n nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);\r\n if (nMod3 === 2 || aBytes.length - nIdx === 1) {\r\n sB64Enc += String.fromCharCode(\r\n this.uint6ToB64(nUint24 >>> 18 & 63), \r\n this.uint6ToB64(nUint24 >>> 12 & 63), \r\n this.uint6ToB64(nUint24 >>> 6 & 63), \r\n this.uint6ToB64(nUint24 & 63)\r\n );\r\n nUint24 = 0;\r\n }\r\n }\r\n\r\n return eqLen === 0 ? sB64Enc : sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? \"=\" : \"==\");\r\n }\r\n\r\n /**\r\n * Base64 string to array encoding helper\r\n * @param nUint6 \r\n */\r\n private uint6ToB64 (nUint6: number): number {\r\n return nUint6 < 26 ?\r\n nUint6 + 65\r\n : nUint6 < 52 ?\r\n nUint6 + 71\r\n : nUint6 < 62 ?\r\n nUint6 - 4\r\n : nUint6 === 62 ?\r\n 43\r\n : nUint6 === 63 ?\r\n 47\r\n :\r\n 65;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants } from \"@azure/msal-common\";\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\n\r\n/**\r\n * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nexport class Base64Decode {\r\n\r\n /**\r\n * Returns a URL-safe plaintext decoded string from b64 encoded input.\r\n * @param input \r\n */\r\n decode(input: string): string {\r\n let encodedString = input.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n switch (encodedString.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n encodedString += \"==\";\r\n break;\r\n case 3:\r\n encodedString += \"=\";\r\n break;\r\n default:\r\n throw new Error(\"Invalid base64 string\");\r\n }\r\n\r\n const inputUtf8Arr = this.base64DecToArr(encodedString);\r\n return BrowserStringUtils.utf8ArrToString(inputUtf8Arr);\r\n }\r\n\r\n /**\r\n * Decodes base64 into Uint8Array\r\n * @param base64String \r\n * @param nBlockSize \r\n */\r\n private base64DecToArr(base64String: string, nBlockSize?: number): Uint8Array {\r\n const sB64Enc = base64String.replace(/[^A-Za-z0-9\\+\\/]/g, Constants.EMPTY_STRING);\r\n const nInLen = sB64Enc.length;\r\n const nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2;\r\n const aBytes = new Uint8Array(nOutLen);\r\n\r\n for (let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\r\n nMod4 = nInIdx & 3;\r\n nUint24 |= this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;\r\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\r\n for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\r\n aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;\r\n }\r\n nUint24 = 0;\r\n }\r\n }\r\n\r\n return aBytes;\r\n }\r\n\r\n /**\r\n * Base64 string to array decoding helper\r\n * @param charNum \r\n */\r\n private b64ToUint6(charNum: number): number {\r\n return charNum > 64 && charNum < 91 ?\r\n charNum - 65\r\n : charNum > 96 && charNum < 123 ? \r\n charNum - 71\r\n : charNum > 47 && charNum < 58 ?\r\n charNum + 4\r\n : charNum === 43 ?\r\n 62\r\n : charNum === 47 ?\r\n 63\r\n :\r\n 0;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError, StringUtils } from \"@azure/msal-common\";\r\n\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const BrowserAuthErrorMessage = {\r\n pkceNotGenerated: {\r\n code: \"pkce_not_created\",\r\n desc: \"The PKCE code challenge and verifier could not be generated.\"\r\n },\r\n cryptoDoesNotExist: {\r\n code: \"crypto_nonexistent\",\r\n desc: \"The crypto object or function is not available.\"\r\n },\r\n httpMethodNotImplementedError: {\r\n code: \"http_method_not_implemented\",\r\n desc: \"The HTTP method given has not been implemented in this library.\"\r\n },\r\n emptyNavigateUriError: {\r\n code: \"empty_navigate_uri\",\r\n desc: \"Navigation URI is empty. Please check stack trace for more info.\"\r\n },\r\n hashEmptyError: {\r\n code: \"hash_empty_error\",\r\n desc: \"Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n hashDoesNotContainStateError: {\r\n code: \"no_state_in_hash\",\r\n desc: \"Hash does not contain state. Please verify that the request originated from msal.\"\r\n },\r\n hashDoesNotContainKnownPropertiesError: {\r\n code: \"hash_does_not_contain_known_properties\",\r\n desc: \"Hash does not contain known properites. Please verify that your redirectUri is not changing the hash. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n unableToParseStateError: {\r\n code: \"unable_to_parse_state\",\r\n desc: \"Unable to parse state. Please verify that the request originated from msal.\"\r\n },\r\n stateInteractionTypeMismatchError: {\r\n code: \"state_interaction_type_mismatch\",\r\n desc: \"Hash contains state but the interaction type does not match the caller.\"\r\n },\r\n interactionInProgress: {\r\n code: \"interaction_in_progress\",\r\n desc: \"Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n popupWindowError: {\r\n code: \"popup_window_error\",\r\n desc: \"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.\"\r\n },\r\n emptyWindowError: {\r\n code: \"empty_window_error\",\r\n desc: \"window.open returned null or undefined window object.\"\r\n },\r\n userCancelledError: {\r\n code: \"user_cancelled\",\r\n desc: \"User cancelled the flow.\"\r\n },\r\n monitorPopupTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in popup failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n monitorIframeTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in iframe failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n redirectInIframeError: {\r\n code: \"redirect_in_iframe\",\r\n desc: \"Redirects are not supported for iframed or brokered applications. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.\"\r\n },\r\n blockTokenRequestsInHiddenIframeError: {\r\n code: \"block_iframe_reload\",\r\n desc: \"Request was blocked inside an iframe because MSAL detected an authentication response. For more visit: aka.ms/msaljs/browser-errors\"\r\n },\r\n blockAcquireTokenInPopupsError: {\r\n code: \"block_nested_popups\",\r\n desc: \"Request was blocked inside a popup because MSAL detected it was running in a popup.\"\r\n },\r\n iframeClosedPrematurelyError: {\r\n code: \"iframe_closed_prematurely\",\r\n desc: \"The iframe being monitored was closed prematurely.\"\r\n },\r\n silentLogoutUnsupportedError: {\r\n code: \"silent_logout_unsupported\",\r\n desc: \"Silent logout not supported. Please call logoutRedirect or logoutPopup instead.\"\r\n },\r\n noAccountError: {\r\n code: \"no_account_error\",\r\n desc: \"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.\"\r\n },\r\n silentPromptValueError: {\r\n code: \"silent_prompt_value_error\",\r\n desc: \"The value given for the prompt value is not valid for silent requests - must be set to 'none' or 'no_session'.\"\r\n },\r\n noTokenRequestCacheError: {\r\n code: \"no_token_request_cache_error\",\r\n desc: \"No token request found in cache.\"\r\n },\r\n unableToParseTokenRequestCacheError: {\r\n code: \"unable_to_parse_token_request_cache_error\",\r\n desc: \"The cached token request could not be parsed.\"\r\n },\r\n noCachedAuthorityError: {\r\n code: \"no_cached_authority_error\",\r\n desc: \"No cached authority found.\"\r\n },\r\n authRequestNotSet: {\r\n code: \"auth_request_not_set_error\",\r\n desc: \"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler\"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n notInBrowserEnvironment: {\r\n code: \"non_browser_environment\",\r\n desc: \"Login and token requests are not supported in non-browser environments.\"\r\n },\r\n databaseNotOpen: {\r\n code: \"database_not_open\",\r\n desc: \"Database is not open!\"\r\n },\r\n noNetworkConnectivity: {\r\n code: \"no_network_connectivity\",\r\n desc: \"No network connectivity. Check your internet connection.\"\r\n },\r\n postRequestFailed: {\r\n code: \"post_request_failed\",\r\n desc: \"Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'\"\r\n },\r\n getRequestFailed: {\r\n code: \"get_request_failed\",\r\n desc: \"Network request failed. Please check the network trace to determine root cause.\"\r\n },\r\n failedToParseNetworkResponse: {\r\n code: \"failed_to_parse_response\",\r\n desc: \"Failed to parse network response. Check network trace.\"\r\n },\r\n unableToLoadTokenError: {\r\n code: \"unable_to_load_token\",\r\n desc: \"Error loading token to cache.\"\r\n },\r\n signingKeyNotFoundInStorage: {\r\n code: \"crypto_key_not_found\",\r\n desc: \"Cryptographic Key or Keypair not found in browser storage.\"\r\n },\r\n authCodeRequired: {\r\n code: \"auth_code_required\",\r\n desc: \"An authorization code must be provided (as the `code` property on the request) to this flow.\"\r\n },\r\n authCodeOrNativeAccountRequired: {\r\n code: \"auth_code_or_nativeAccountId_required\",\r\n desc: \"An authorization code or nativeAccountId must be provided to this flow.\"\r\n },\r\n spaCodeAndNativeAccountPresent: {\r\n code: \"spa_code_and_nativeAccountId_present\",\r\n desc: \"Request cannot contain both spa code and native account id.\"\r\n },\r\n databaseUnavailable: {\r\n code: \"database_unavailable\",\r\n desc: \"IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.\"\r\n },\r\n unableToAcquireTokenFromNativePlatform: {\r\n code: \"unable_to_acquire_token_from_native_platform\",\r\n desc: \"Unable to acquire token from native platform. For a list of possible reasons visit aka.ms/msaljs/browser-errors.\"\r\n },\r\n nativeHandshakeTimeout: {\r\n code: \"native_handshake_timeout\",\r\n desc: \"Timed out while attempting to establish connection to browser extension\"\r\n },\r\n nativeExtensionNotInstalled: {\r\n code: \"native_extension_not_installed\",\r\n desc: \"Native extension is not installed. If you think this is a mistake call the initialize function.\"\r\n },\r\n nativeConnectionNotEstablished: {\r\n code: \"native_connection_not_established\",\r\n desc: \"Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). For more please visit aka.ms/msaljs/browser-errors.\"\r\n },\r\n nativeBrokerCalledBeforeInitialize: {\r\n code: \"native_broker_called_before_initialize\",\r\n desc: \"You must call and await the initialize function before attempting to call any other MSAL API when native brokering is enabled. For more please visit aka.ms/msaljs/browser-errors.\"\r\n },\r\n nativePromptNotSupported: {\r\n code: \"native_prompt_not_supported\",\r\n desc: \"The provided prompt is not supported by the native platform. This request should be routed to the web based flow.\"\r\n }\r\n};\r\n\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nexport class BrowserAuthError extends AuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n\r\n Object.setPrototypeOf(this, BrowserAuthError.prototype);\r\n this.name = \"BrowserAuthError\";\r\n }\r\n\r\n /**\r\n * Creates an error thrown when PKCE is not implemented.\r\n * @param errDetail\r\n */\r\n static createPkceNotGeneratedError(errDetail: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.pkceNotGenerated.code,\r\n `${BrowserAuthErrorMessage.pkceNotGenerated.desc} Detail:${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the crypto object is unavailable.\r\n * @param errDetail\r\n */\r\n static createCryptoNotAvailableError(errDetail: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.cryptoDoesNotExist.code,\r\n `${BrowserAuthErrorMessage.cryptoDoesNotExist.desc} Detail:${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when an HTTP method hasn't been implemented by the browser class.\r\n * @param method\r\n */\r\n static createHttpMethodNotImplementedError(method: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.httpMethodNotImplementedError.code,\r\n `${BrowserAuthErrorMessage.httpMethodNotImplementedError.desc} Given Method: ${method}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the navigation URI is empty.\r\n */\r\n static createEmptyNavigationUriError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyNavigateUriError.code, BrowserAuthErrorMessage.emptyNavigateUriError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n * @param hashValue\r\n */\r\n static createEmptyHashError(hashValue: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashEmptyError.code, `${BrowserAuthErrorMessage.hashEmptyError.desc} Given Url: ${hashValue}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n static createHashDoesNotContainStateError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainStateError.code, BrowserAuthErrorMessage.hashDoesNotContainStateError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value does not contain known properties\r\n */\r\n static createHashDoesNotContainKnownPropertiesError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.code, BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n static createUnableToParseStateError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseStateError.code, BrowserAuthErrorMessage.unableToParseStateError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the state value in the hash does not match the interaction type of the API attempting to consume it.\r\n */\r\n static createStateInteractionTypeMismatchError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.stateInteractionTypeMismatchError.code, BrowserAuthErrorMessage.stateInteractionTypeMismatchError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when a browser interaction (redirect or popup) is in progress.\r\n */\r\n static createInteractionInProgressError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.interactionInProgress.code, BrowserAuthErrorMessage.interactionInProgress.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the popup window could not be opened.\r\n * @param errDetail\r\n */\r\n static createPopupWindowError(errDetail?: string): BrowserAuthError {\r\n let errorMessage = BrowserAuthErrorMessage.popupWindowError.desc;\r\n errorMessage = !StringUtils.isEmpty(errDetail) ? `${errorMessage} Details: ${errDetail}` : errorMessage;\r\n return new BrowserAuthError(BrowserAuthErrorMessage.popupWindowError.code, errorMessage);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when window.open returns an empty window object.\r\n * @param errDetail\r\n */\r\n static createEmptyWindowCreatedError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyWindowError.code, BrowserAuthErrorMessage.emptyWindowError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the user closes a popup.\r\n */\r\n static createUserCancelledError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.userCancelledError.code,\r\n BrowserAuthErrorMessage.userCancelledError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when monitorPopupFromHash times out for a given popup.\r\n */\r\n static createMonitorPopupTimeoutError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorPopupTimeoutError.code,\r\n BrowserAuthErrorMessage.monitorPopupTimeoutError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when monitorIframeFromHash times out for a given iframe.\r\n */\r\n static createMonitorIframeTimeoutError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorIframeTimeoutError.code,\r\n BrowserAuthErrorMessage.monitorIframeTimeoutError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when navigateWindow is called inside an iframe or brokered applications.\r\n * @param windowParentCheck\r\n */\r\n static createRedirectInIframeError(windowParentCheck: boolean): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.redirectInIframeError.code,\r\n `${BrowserAuthErrorMessage.redirectInIframeError.desc} (window.parent !== window) => ${windowParentCheck}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when an auth reload is done inside an iframe.\r\n */\r\n static createBlockReloadInHiddenIframeError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.code,\r\n BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when a popup attempts to call an acquireToken API\r\n * @returns\r\n */\r\n static createBlockAcquireTokenInPopupsError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.code,\r\n BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when an iframe is found to be closed before the timeout is reached.\r\n */\r\n static createIframeClosedPrematurelyError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.iframeClosedPrematurelyError.code, BrowserAuthErrorMessage.iframeClosedPrematurelyError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the logout API is called on any of the silent interaction clients\r\n */\r\n static createSilentLogoutUnsupportedError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentLogoutUnsupportedError.code, BrowserAuthErrorMessage.silentLogoutUnsupportedError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the account object is not provided in the acquireTokenSilent API.\r\n */\r\n static createNoAccountError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noAccountError.code, BrowserAuthErrorMessage.noAccountError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when a given prompt value is invalid for silent requests.\r\n */\r\n static createSilentPromptValueError(givenPrompt: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentPromptValueError.code, `${BrowserAuthErrorMessage.silentPromptValueError.desc} Given value: ${givenPrompt}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the cached token request could not be retrieved from the cache\r\n */\r\n static createUnableToParseTokenRequestCacheError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.code,\r\n BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the token request could not be retrieved from the cache\r\n */\r\n static createNoTokenRequestCacheError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noTokenRequestCacheError.code,\r\n BrowserAuthErrorMessage.noTokenRequestCacheError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when handleCodeResponse is called before initiateAuthRequest (InteractionHandler)\r\n */\r\n static createAuthRequestNotSetError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authRequestNotSet.code,\r\n BrowserAuthErrorMessage.authRequestNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the authority could not be retrieved from the cache\r\n */\r\n static createNoCachedAuthorityError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noCachedAuthorityError.code,\r\n BrowserAuthErrorMessage.noCachedAuthorityError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if cache type is invalid.\r\n */\r\n static createInvalidCacheTypeError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.invalidCacheType.code, `${BrowserAuthErrorMessage.invalidCacheType.desc}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when login and token requests are made from a non-browser environment\r\n */\r\n static createNonBrowserEnvironmentError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.notInBrowserEnvironment.code, BrowserAuthErrorMessage.notInBrowserEnvironment.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when indexDB database is not open\r\n */\r\n static createDatabaseNotOpenError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseNotOpen.code, BrowserAuthErrorMessage.databaseNotOpen.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when token fetch fails due to no internet\r\n */\r\n static createNoNetworkConnectivityError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noNetworkConnectivity.code, BrowserAuthErrorMessage.noNetworkConnectivity.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when token fetch fails due to reasons other than internet connectivity\r\n */\r\n static createPostRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.postRequestFailed.code, `${BrowserAuthErrorMessage.postRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when get request fails due to reasons other than internet connectivity\r\n */\r\n static createGetRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.getRequestFailed.code, `${BrowserAuthErrorMessage.getRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when network client fails to parse network response\r\n */\r\n static createFailedToParseNetworkResponseError(endpoint: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.failedToParseNetworkResponse.code, `${BrowserAuthErrorMessage.failedToParseNetworkResponse.desc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when the necessary information is not available to sideload tokens\r\n */\r\n static createUnableToLoadTokenError(errorDetail: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToLoadTokenError.code, `${BrowserAuthErrorMessage.unableToLoadTokenError.desc} | ${errorDetail}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when the queried cryptographic key is not found in IndexedDB\r\n */\r\n static createSigningKeyNotFoundInStorageError(keyId: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code, `${BrowserAuthErrorMessage.signingKeyNotFoundInStorage.desc} | No match found for KeyId: ${keyId}`);\r\n }\r\n\r\n /**\r\n * Create an error when an authorization code is required but not provided\r\n */\r\n static createAuthCodeRequiredError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeRequired.code, BrowserAuthErrorMessage.authCodeRequired.desc);\r\n }\r\n\r\n /**\r\n * Create an error when an authorization code or native account ID is required but not provided\r\n */\r\n static createAuthCodeOrNativeAccountIdRequiredError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.code, BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.desc);\r\n }\r\n\r\n /**\r\n * Create an error when both authorization code and native account ID are provided\r\n */\r\n static createSpaCodeAndNativeAccountIdPresentError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.spaCodeAndNativeAccountPresent.code, BrowserAuthErrorMessage.spaCodeAndNativeAccountPresent.desc);\r\n }\r\n\r\n /**\r\n * Create an error when IndexedDB is unavailable\r\n */\r\n static createDatabaseUnavailableError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseUnavailable.code, BrowserAuthErrorMessage.databaseUnavailable.desc);\r\n }\r\n\r\n /**\r\n * Create an error when native token acquisition is not possible\r\n */\r\n static createUnableToAcquireTokenFromNativePlatformError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.code, BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when Handshake with browser extension times out\r\n */\r\n static createNativeHandshakeTimeoutError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeHandshakeTimeout.code, BrowserAuthErrorMessage.nativeHandshakeTimeout.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when browser extension is not installed\r\n */\r\n static createNativeExtensionNotInstalledError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeExtensionNotInstalled.code, BrowserAuthErrorMessage.nativeExtensionNotInstalled.desc);\r\n }\r\n\r\n /**\r\n * Create an error when native connection has not been established\r\n * @returns\r\n */\r\n static createNativeConnectionNotEstablishedError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeConnectionNotEstablished.code, BrowserAuthErrorMessage.nativeConnectionNotEstablished.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when the initialize function hasn't been called\r\n */\r\n static createNativeBrokerCalledBeforeInitialize(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.code, BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when requesting a token directly from the native platform with an unsupported prompt parameter e.g. select_account, login or create\r\n * These requests must go through eSTS to ensure eSTS is aware of the new account\r\n */\r\n static createNativePromptParameterNotSupportedError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativePromptNotSupported.code, BrowserAuthErrorMessage.nativePromptNotSupported.desc);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { PkceCodes } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { Base64Encode } from \"../encode/Base64Encode\";\r\nimport { BrowserCrypto } from \"./BrowserCrypto\";\r\n\r\n// Constant byte array length\r\nconst RANDOM_BYTE_ARR_LENGTH = 32;\r\n\r\n/**\r\n * Class which exposes APIs to generate PKCE codes and code verifiers.\r\n */\r\nexport class PkceGenerator {\r\n\r\n private base64Encode: Base64Encode;\r\n private cryptoObj: BrowserCrypto;\r\n\r\n constructor(cryptoObj: BrowserCrypto) {\r\n this.base64Encode = new Base64Encode();\r\n this.cryptoObj = cryptoObj;\r\n }\r\n\r\n /**\r\n * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636\r\n */\r\n async generateCodes(): Promise<PkceCodes> {\r\n const codeVerifier = this.generateCodeVerifier();\r\n const codeChallenge = await this.generateCodeChallengeFromVerifier(codeVerifier);\r\n return {\r\n verifier: codeVerifier,\r\n challenge: codeChallenge\r\n };\r\n }\r\n\r\n /**\r\n * Generates a random 32 byte buffer and returns the base64\r\n * encoded string to be used as a PKCE Code Verifier\r\n */\r\n private generateCodeVerifier(): string {\r\n try {\r\n // Generate random values as utf-8\r\n const buffer: Uint8Array = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);\r\n this.cryptoObj.getRandomValues(buffer);\r\n // encode verifier as base64\r\n const pkceCodeVerifierB64: string = this.base64Encode.urlEncodeArr(buffer);\r\n return pkceCodeVerifierB64;\r\n } catch (e) {\r\n throw BrowserAuthError.createPkceNotGeneratedError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Creates a base64 encoded PKCE Code Challenge string from the\r\n * hash created from the PKCE Code Verifier supplied\r\n */\r\n private async generateCodeChallengeFromVerifier(pkceCodeVerifier: string): Promise<string> {\r\n try {\r\n // hashed verifier\r\n const pkceHashedCodeVerifier = await this.cryptoObj.sha256Digest(pkceCodeVerifier);\r\n // encode hash as base64\r\n return this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier));\r\n } catch (e) {\r\n throw BrowserAuthError.createPkceNotGeneratedError(e);\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\r\nimport { ISubtleCrypto } from \"./ISubtleCrypto\";\r\n\r\nexport class ModernBrowserCrypto implements ISubtleCrypto {\r\n getRandomValues(dataBuffer: Uint8Array): Uint8Array {\r\n return window.crypto.getRandomValues(dataBuffer);\r\n }\r\n\r\n async generateKey(algorithm: RsaHashedKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair> {\r\n return window.crypto.subtle.generateKey(algorithm, extractable, keyUsages) as Promise<CryptoKeyPair>;\r\n }\r\n\r\n async exportKey(key: CryptoKey): Promise<JsonWebKey> {\r\n return window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key) as Promise<JsonWebKey>;\r\n }\r\n\r\n async importKey(keyData: JsonWebKey, algorithm: RsaHashedImportParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey> {\r\n return window.crypto.subtle.importKey(KEY_FORMAT_JWK, keyData, algorithm, extractable, keyUsages) as Promise<CryptoKey>;\r\n }\r\n\r\n async sign(algorithm: AlgorithmIdentifier, key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer> {\r\n return window.crypto.subtle.sign(algorithm, key, data) as Promise<ArrayBuffer>;\r\n }\r\n\r\n async digest(algorithm: AlgorithmIdentifier, data: Uint8Array): Promise<ArrayBuffer> {\r\n return window.crypto.subtle.digest(algorithm, data) as Promise<ArrayBuffer>;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\r\nimport { ISubtleCrypto } from \"./ISubtleCrypto\";\r\n\r\ndeclare global {\r\n interface Window {\r\n msrCrypto: Crypto & {\r\n initPrng: (entropy: Uint8Array | number[]) => void\r\n }\r\n }\r\n}\r\n\r\nexport class MsrBrowserCrypto implements ISubtleCrypto {\r\n initPrng(entropy : Uint8Array): void {\r\n // Turn into array, as initPrng seems to not always like Uint8Array (even though it should support both)\r\n return window.msrCrypto.initPrng([...entropy]);\r\n }\r\n\r\n getRandomValues(dataBuffer: Uint8Array): Uint8Array {\r\n return window.msrCrypto.getRandomValues(dataBuffer);\r\n }\r\n\r\n async generateKey(algorithm: RsaHashedKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair> {\r\n return window.msrCrypto.subtle.generateKey(algorithm, extractable, keyUsages) as Promise<CryptoKeyPair>;\r\n }\r\n\r\n async exportKey(key: CryptoKey): Promise<JsonWebKey> {\r\n return window.msrCrypto.subtle.exportKey(KEY_FORMAT_JWK, key) as Promise<JsonWebKey> as Promise<JsonWebKey>;\r\n }\r\n\r\n async importKey(keyData: JsonWebKey, algorithm: RsaHashedImportParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey> {\r\n return window.msrCrypto.subtle.importKey(KEY_FORMAT_JWK, keyData, algorithm, extractable, keyUsages) as Promise<CryptoKey>;\r\n }\r\n\r\n async sign(algorithm: AlgorithmIdentifier, key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer> {\r\n return window.msrCrypto.subtle.sign(algorithm, key, data) as Promise<ArrayBuffer>;\r\n }\r\n\r\n async digest(algorithm: AlgorithmIdentifier, data: Uint8Array): Promise<ArrayBuffer> {\r\n return window.msrCrypto.subtle.digest(algorithm, data) as Promise<ArrayBuffer>; \r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants } from \"@azure/msal-common\";\r\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\nimport { ISubtleCrypto } from \"./ISubtleCrypto\";\r\n\r\nexport class MsBrowserCrypto implements ISubtleCrypto {\r\n getRandomValues(dataBuffer: Uint8Array): Uint8Array {\r\n return window[\"msCrypto\"].getRandomValues(dataBuffer);\r\n }\r\n\r\n async generateKey(algorithm: RsaHashedKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair> {\r\n return new Promise((resolve: Function, reject: Function) => {\r\n const msGenerateKey = window[\"msCrypto\"].subtle.generateKey(algorithm, extractable, keyUsages);\r\n msGenerateKey.addEventListener(\"complete\", (e: { target: { result: CryptoKeyPair | PromiseLike<CryptoKeyPair>; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n\r\n msGenerateKey.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n async exportKey(key: CryptoKey): Promise<JsonWebKey> {\r\n return new Promise((resolve: Function, reject: Function) => {\r\n const msExportKey = window[\"msCrypto\"].subtle.exportKey(KEY_FORMAT_JWK, key);\r\n msExportKey.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer; }; }) => {\r\n const resultBuffer: ArrayBuffer = e.target.result;\r\n\r\n const resultString = BrowserStringUtils.utf8ArrToString(new Uint8Array(resultBuffer))\r\n .replace(/\\r/g, Constants.EMPTY_STRING)\r\n .replace(/\\n/g, Constants.EMPTY_STRING)\r\n .replace(/\\t/g, Constants.EMPTY_STRING)\r\n .split(\" \").join(Constants.EMPTY_STRING)\r\n .replace(\"\\u0000\", Constants.EMPTY_STRING);\r\n\r\n try {\r\n resolve(JSON.parse(resultString));\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n\r\n msExportKey.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n async importKey(keyData: JsonWebKey, algorithm: RsaHashedImportParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey> {\r\n const keyString = BrowserStringUtils.getSortedObjectString(keyData);\r\n const keyBuffer = BrowserStringUtils.stringToArrayBuffer(keyString);\r\n\r\n return new Promise((resolve: Function, reject: Function) => {\r\n const msImportKey = window[\"msCrypto\"].subtle.importKey(KEY_FORMAT_JWK, keyBuffer, algorithm, extractable, keyUsages);\r\n msImportKey.addEventListener(\"complete\", (e: { target: { result: CryptoKey | PromiseLike<CryptoKey>; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n\r\n msImportKey.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n async sign(algorithm: AlgorithmIdentifier, key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer> {\r\n return new Promise((resolve: Function, reject: Function) => {\r\n const msSign = window[\"msCrypto\"].subtle.sign(algorithm, key, data);\r\n msSign.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike<ArrayBuffer>; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n\r\n msSign.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n \r\n async digest(algorithm: AlgorithmIdentifier, data: Uint8Array): Promise<ArrayBuffer> {\r\n return new Promise((resolve, reject) => {\r\n const digestOperation = window[\"msCrypto\"].subtle.digest(algorithm, data.buffer);\r\n digestOperation.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike<ArrayBuffer>; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n digestOperation.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { ISubtleCrypto } from \"./ISubtleCrypto\";\r\nimport { ModernBrowserCrypto } from \"./ModernBrowserCrypto\";\r\nimport { MsrBrowserCrypto } from \"./MsrBrowserCrypto\";\r\nimport { MsBrowserCrypto } from \"./MsBrowserCrypto\";\r\nimport { Logger } from \"@azure/msal-common\";\r\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\r\nimport { CryptoOptions } from \"../config/Configuration\";\r\n/**\r\n * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams\r\n */\r\n// RSA KeyGen Algorithm\r\nconst PKCS1_V15_KEYGEN_ALG = \"RSASSA-PKCS1-v1_5\";\r\n// SHA-256 hashing algorithm\r\nconst S256_HASH_ALG = \"SHA-256\";\r\n// MOD length for PoP tokens\r\nconst MODULUS_LENGTH = 2048;\r\n// Public Exponent\r\nconst PUBLIC_EXPONENT: Uint8Array = new Uint8Array([0x01, 0x00, 0x01]);\r\n\r\n/**\r\n * This class implements functions used by the browser library to perform cryptography operations such as\r\n * hashing and encoding. It also has helper functions to validate the availability of specific APIs.\r\n */\r\nexport class BrowserCrypto {\r\n\r\n private keygenAlgorithmOptions: RsaHashedKeyGenParams;\r\n private subtleCrypto: ISubtleCrypto;\r\n private logger: Logger;\r\n private cryptoOptions?: CryptoOptions;\r\n\r\n constructor(logger: Logger, cryptoOptions?: CryptoOptions) {\r\n this.logger = logger;\r\n this.cryptoOptions = cryptoOptions;\r\n\r\n if (this.hasBrowserCrypto()) {\r\n // Use standard modern web crypto if available\r\n this.logger.verbose(\"BrowserCrypto: modern crypto interface available\");\r\n this.subtleCrypto = new ModernBrowserCrypto();\r\n } else if (this.hasIECrypto()) {\r\n // For IE11, use msCrypto interface\r\n this.logger.verbose(\"BrowserCrypto: MS crypto interface available\");\r\n this.subtleCrypto = new MsBrowserCrypto();\r\n } else if (this.hasMsrCrypto() && this.cryptoOptions?.useMsrCrypto) {\r\n // For other browsers, use MSR Crypto if found\r\n this.logger.verbose(\"BrowserCrypto: MSR crypto interface available\");\r\n this.subtleCrypto = new MsrBrowserCrypto();\r\n } else {\r\n if (this.hasMsrCrypto()) {\r\n this.logger.info(\"BrowserCrypto: MSR Crypto interface available but system.cryptoOptions.useMsrCrypto not enabled\");\r\n }\r\n this.logger.error(\"BrowserCrypto: No crypto interfaces available.\");\r\n throw BrowserAuthError.createCryptoNotAvailableError(\"Browser crypto, msCrypto, or msrCrypto interfaces not available.\");\r\n }\r\n\r\n // Mainly needed for MSR Crypto: https://github.com/microsoft/MSR-JavaScript-Crypto#random-number-generator-prng\r\n if (this.subtleCrypto.initPrng) {\r\n this.logger.verbose(\"BrowserCrypto: Interface requires entropy\");\r\n\r\n if (!this.cryptoOptions?.entropy) {\r\n this.logger.error(\"BrowserCrypto: Interface requires entropy but none provided.\");\r\n throw BrowserConfigurationAuthError.createEntropyNotProvided();\r\n }\r\n\r\n this.logger.verbose(\"BrowserCrypto: Entropy provided\");\r\n this.subtleCrypto.initPrng(this.cryptoOptions.entropy);\r\n }\r\n\r\n this.keygenAlgorithmOptions = {\r\n name: PKCS1_V15_KEYGEN_ALG,\r\n hash: S256_HASH_ALG,\r\n modulusLength: MODULUS_LENGTH,\r\n publicExponent: PUBLIC_EXPONENT\r\n };\r\n }\r\n\r\n /**\r\n * Check whether IE crypto or other browser cryptography is available.\r\n */\r\n private hasIECrypto(): boolean {\r\n return \"msCrypto\" in window;\r\n }\r\n\r\n /**\r\n * Check whether browser crypto is available.\r\n */\r\n private hasBrowserCrypto(): boolean {\r\n return \"crypto\" in window;\r\n }\r\n\r\n /**\r\n * Check whether MSR crypto polyfill is available\r\n */\r\n private hasMsrCrypto(): boolean {\r\n return \"msrCrypto\" in window;\r\n }\r\n\r\n /**\r\n * Returns a sha-256 hash of the given dataString as an ArrayBuffer.\r\n * @param dataString \r\n */\r\n async sha256Digest(dataString: string): Promise<ArrayBuffer> {\r\n const data = BrowserStringUtils.stringToUtf8Arr(dataString);\r\n // MSR Crypto wants object with name property, instead of string\r\n return this.subtleCrypto.digest({ name: S256_HASH_ALG }, data);\r\n }\r\n\r\n /**\r\n * Populates buffer with cryptographically random values.\r\n * @param dataBuffer \r\n */\r\n getRandomValues(dataBuffer: Uint8Array): Uint8Array {\r\n return this.subtleCrypto.getRandomValues(dataBuffer);\r\n }\r\n\r\n /**\r\n * Generates a keypair based on current keygen algorithm config.\r\n * @param extractable \r\n * @param usages \r\n */\r\n async generateKeyPair(extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKeyPair> {\r\n return this.subtleCrypto.generateKey(this.keygenAlgorithmOptions, extractable, usages);\r\n }\r\n\r\n /**\r\n * Export key as Json Web Key (JWK)\r\n * @param key \r\n * @param format \r\n */\r\n async exportJwk(key: CryptoKey): Promise<JsonWebKey> {\r\n return this.subtleCrypto.exportKey(key);\r\n }\r\n\r\n /**\r\n * Imports key as Json Web Key (JWK), can set extractable and usages.\r\n * @param key \r\n * @param format \r\n * @param extractable \r\n * @param usages \r\n */\r\n async importJwk(key: JsonWebKey, extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKey> {\r\n return this.subtleCrypto.importKey(key, this.keygenAlgorithmOptions, extractable, usages);\r\n }\r\n\r\n /**\r\n * Signs given data with given key\r\n * @param key \r\n * @param data \r\n */\r\n async sign(key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer> {\r\n return this.subtleCrypto.sign(this.keygenAlgorithmOptions, key, data);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { DB_NAME, DB_TABLE_NAME, DB_VERSION } from \"../utils/BrowserConstants\";\r\nimport { IAsyncStorage } from \"./IAsyncMemoryStorage\";\r\n\r\ninterface IDBOpenDBRequestEvent extends Event {\r\n target: IDBOpenDBRequest & EventTarget;\r\n}\r\n\r\ninterface IDBOpenOnUpgradeNeededEvent extends IDBVersionChangeEvent {\r\n target: IDBOpenDBRequest & EventTarget;\r\n}\r\n\r\ninterface IDBRequestEvent extends Event {\r\n target: IDBRequest & EventTarget;\r\n}\r\n\r\n/**\r\n * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\r\n */\r\nexport class DatabaseStorage<T> implements IAsyncStorage<T> {\r\n private db: IDBDatabase|undefined;\r\n private dbName: string;\r\n private tableName: string;\r\n private version: number;\r\n private dbOpen: boolean;\r\n\r\n constructor() {\r\n this.dbName = DB_NAME;\r\n this.version = DB_VERSION;\r\n this.tableName = DB_TABLE_NAME;\r\n this.dbOpen = false;\r\n }\r\n\r\n /**\r\n * Opens IndexedDB instance.\r\n */\r\n async open(): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n const openDB = window.indexedDB.open(this.dbName, this.version);\r\n openDB.addEventListener(\"upgradeneeded\", (e: IDBVersionChangeEvent) => {\r\n const event = e as IDBOpenOnUpgradeNeededEvent;\r\n event.target.result.createObjectStore(this.tableName);\r\n });\r\n openDB.addEventListener(\"success\", (e: Event) => {\r\n const event = e as IDBOpenDBRequestEvent;\r\n this.db = event.target.result;\r\n this.dbOpen = true;\r\n resolve();\r\n });\r\n openDB.addEventListener(\"error\", () => reject(BrowserAuthError.createDatabaseUnavailableError()));\r\n });\r\n }\r\n\r\n /**\r\n * Closes the connection to IndexedDB database when all pending transactions\r\n * complete.\r\n */\r\n closeConnection(): void {\r\n const db = this.db;\r\n if (db && this.dbOpen) {\r\n db.close();\r\n this.dbOpen = false;\r\n }\r\n }\r\n\r\n /**\r\n * Opens database if it's not already open\r\n */\r\n private async validateDbIsOpen(): Promise<void> {\r\n if (!this.dbOpen) {\r\n return await this.open();\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves item from IndexedDB instance.\r\n * @param key \r\n */\r\n async getItem(key: string): Promise<T | null> {\r\n await this.validateDbIsOpen();\r\n return new Promise<T>((resolve, reject) => {\r\n // TODO: Add timeouts?\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n const transaction = this.db.transaction([this.tableName], \"readonly\");\r\n const objectStore = transaction.objectStore(this.tableName);\r\n const dbGet = objectStore.get(key);\r\n \r\n dbGet.addEventListener(\"success\", (e: Event) => {\r\n const event = e as IDBRequestEvent;\r\n this.closeConnection();\r\n resolve(event.target.result);\r\n });\r\n\r\n dbGet.addEventListener(\"error\", (e: Event) => {\r\n this.closeConnection();\r\n reject(e);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Adds item to IndexedDB under given key\r\n * @param key \r\n * @param payload \r\n */\r\n async setItem(key: string, payload: T): Promise<void> {\r\n await this.validateDbIsOpen();\r\n return new Promise<void>((resolve: Function, reject: Function) => {\r\n // TODO: Add timeouts?\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n const transaction = this.db.transaction([this.tableName], \"readwrite\");\r\n\r\n const objectStore = transaction.objectStore(this.tableName);\r\n\r\n const dbPut = objectStore.put(payload, key);\r\n\r\n dbPut.addEventListener(\"success\", () => {\r\n this.closeConnection();\r\n resolve();\r\n });\r\n\r\n dbPut.addEventListener(\"error\", (e) => {\r\n this.closeConnection();\r\n reject(e);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Removes item from IndexedDB under given key\r\n * @param key\r\n */\r\n async removeItem(key: string): Promise<void> {\r\n await this.validateDbIsOpen();\r\n return new Promise<void>((resolve: Function, reject: Function) => {\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n\r\n const transaction = this.db.transaction([this.tableName], \"readwrite\");\r\n const objectStore = transaction.objectStore(this.tableName);\r\n const dbDelete = objectStore.delete(key);\r\n\r\n dbDelete.addEventListener(\"success\", () => {\r\n this.closeConnection();\r\n resolve();\r\n });\r\n\r\n dbDelete.addEventListener(\"error\", (e) => {\r\n this.closeConnection();\r\n reject(e);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Get all the keys from the storage object as an iterable array of strings.\r\n */\r\n async getKeys(): Promise<string[]> {\r\n await this.validateDbIsOpen();\r\n return new Promise<string[]>((resolve: Function, reject: Function) => {\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n\r\n const transaction = this.db.transaction([this.tableName], \"readonly\");\r\n const objectStore = transaction.objectStore(this.tableName);\r\n const dbGetKeys = objectStore.getAllKeys();\r\n\r\n dbGetKeys.addEventListener(\"success\", (e: Event) => {\r\n const event = e as IDBRequestEvent;\r\n this.closeConnection();\r\n resolve(event.target.result);\r\n });\r\n\r\n dbGetKeys.addEventListener(\"error\", (e: Event) => {\r\n this.closeConnection();\r\n reject(e);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * \r\n * Checks whether there is an object under the search key in the object store\r\n */\r\n async containsKey(key: string): Promise<boolean> {\r\n await this.validateDbIsOpen();\r\n\r\n return new Promise<boolean>((resolve: Function, reject: Function) => {\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n\r\n const transaction = this.db.transaction([this.tableName], \"readonly\");\r\n const objectStore = transaction.objectStore(this.tableName);\r\n const dbContainsKey = objectStore.count(key);\r\n\r\n dbContainsKey.addEventListener(\"success\", (e: Event) => {\r\n const event = e as IDBRequestEvent;\r\n this.closeConnection();\r\n resolve(event.target.result === 1);\r\n });\r\n\r\n dbContainsKey.addEventListener(\"error\", (e: Event) => {\r\n this.closeConnection();\r\n reject(e);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Deletes the MSAL database. The database is deleted rather than cleared to make it possible\r\n * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues\r\n * with IndexedDB database versions.\r\n */\r\n async deleteDatabase(): Promise<boolean> {\r\n // Check if database being deleted exists\r\n\r\n if (this.db && this.dbOpen) {\r\n this.closeConnection();\r\n }\r\n\r\n return new Promise<boolean>((resolve: Function, reject: Function) => {\r\n const deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME);\r\n deleteDbRequest.addEventListener(\"success\", () => resolve(true));\r\n deleteDbRequest.addEventListener(\"blocked\", () => resolve(true));\r\n deleteDbRequest.addEventListener(\"error\", () => reject(false));\r\n });\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { IWindowStorage } from \"./IWindowStorage\";\r\n\r\nexport class MemoryStorage<T> implements IWindowStorage<T> {\r\n\r\n private cache: Map<string, T>;\r\n\r\n constructor() {\r\n this.cache = new Map<string, T>();\r\n }\r\n\r\n getItem(key: string): T | null {\r\n return this.cache.get(key) || null;\r\n }\r\n\r\n setItem(key: string, value: T): void {\r\n this.cache.set(key, value);\r\n }\r\n\r\n removeItem(key: string): void {\r\n this.cache.delete(key);\r\n }\r\n\r\n getKeys(): string[] {\r\n const cacheKeys: string[] = [];\r\n this.cache.forEach((value: T, key: string) => {\r\n cacheKeys.push(key);\r\n });\r\n return cacheKeys;\r\n }\r\n\r\n containsKey(key: string): boolean {\r\n return this.cache.has(key);\r\n }\r\n\r\n clear() :void {\r\n this.cache.clear();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Logger } from \"@azure/msal-common\";\r\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\r\nimport { DatabaseStorage } from \"./DatabaseStorage\";\r\nimport { IAsyncStorage } from \"./IAsyncMemoryStorage\";\r\nimport { MemoryStorage } from \"./MemoryStorage\";\r\n\r\n/**\r\n * This class allows MSAL to store artifacts asynchronously using the DatabaseStorage IndexedDB wrapper,\r\n * backed up with the more volatile MemoryStorage object for cases in which IndexedDB may be unavailable.\r\n */\r\nexport class AsyncMemoryStorage<T> implements IAsyncStorage<T> {\r\n private inMemoryCache: MemoryStorage<T>;\r\n private indexedDBCache: DatabaseStorage<T>;\r\n private logger: Logger;\r\n private storeName: string;\r\n\r\n constructor(logger: Logger, storeName: string) {\r\n this.inMemoryCache = new MemoryStorage<T>();\r\n this.indexedDBCache = new DatabaseStorage<T>();\r\n this.logger = logger;\r\n this.storeName = storeName;\r\n }\r\n\r\n private handleDatabaseAccessError(error: unknown): void {\r\n if (error instanceof BrowserAuthError && error.errorCode === BrowserAuthErrorMessage.databaseUnavailable.code) {\r\n this.logger.error(\"Could not access persistent storage. This may be caused by browser privacy features which block persistent storage in third-party contexts.\");\r\n } else {\r\n throw error;\r\n }\r\n }\r\n /**\r\n * Get the item matching the given key. Tries in-memory cache first, then in the asynchronous\r\n * storage object if item isn't found in-memory.\r\n * @param key \r\n */\r\n async getItem(key: string): Promise<T | null> {\r\n const item = this.inMemoryCache.getItem(key);\r\n if(!item) {\r\n try {\r\n this.logger.verbose(\"Queried item not found in in-memory cache, now querying persistent storage.\");\r\n return await this.indexedDBCache.getItem(key);\r\n } catch (e) {\r\n this.handleDatabaseAccessError(e);\r\n }\r\n }\r\n return item;\r\n }\r\n\r\n /**\r\n * Sets the item in the in-memory cache and then tries to set it in the asynchronous\r\n * storage object with the given key.\r\n * @param key \r\n * @param value \r\n */\r\n async setItem(key: string, value: T): Promise<void> {\r\n this.inMemoryCache.setItem(key, value);\r\n try {\r\n await this.indexedDBCache.setItem(key, value);\r\n } catch (e) {\r\n this.handleDatabaseAccessError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Removes the item matching the key from the in-memory cache, then tries to remove it from the asynchronous storage object.\r\n * @param key \r\n */\r\n async removeItem(key: string): Promise<void> {\r\n this.inMemoryCache.removeItem(key);\r\n try {\r\n await this.indexedDBCache.removeItem(key);\r\n } catch (e) {\r\n this.handleDatabaseAccessError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Get all the keys from the in-memory cache as an iterable array of strings. If no keys are found, query the keys in the \r\n * asynchronous storage object.\r\n */\r\n async getKeys(): Promise<string[]> {\r\n const cacheKeys = this.inMemoryCache.getKeys();\r\n if (cacheKeys.length === 0) {\r\n try {\r\n this.logger.verbose(\"In-memory cache is empty, now querying persistent storage.\");\r\n return await this.indexedDBCache.getKeys();\r\n } catch (e) {\r\n this.handleDatabaseAccessError(e);\r\n }\r\n }\r\n return cacheKeys;\r\n }\r\n\r\n /**\r\n * Returns true or false if the given key is present in the cache.\r\n * @param key \r\n */\r\n async containsKey(key: string): Promise<boolean> {\r\n const containsKey = this.inMemoryCache.containsKey(key);\r\n if(!containsKey) {\r\n try {\r\n this.logger.verbose(\"Key not found in in-memory cache, now querying persistent storage.\");\r\n return await this.indexedDBCache.containsKey(key);\r\n } catch (e) {\r\n this.handleDatabaseAccessError(e);\r\n }\r\n }\r\n return containsKey;\r\n }\r\n\r\n /**\r\n * Clears in-memory Map\r\n */\r\n clearInMemory(): void {\r\n // InMemory cache is a Map instance, clear is straightforward\r\n this.logger.verbose(`Deleting in-memory keystore ${this.storeName}`);\r\n this.inMemoryCache.clear();\r\n this.logger.verbose(`In-memory keystore ${this.storeName} deleted`);\r\n }\r\n\r\n /**\r\n * Tries to delete the IndexedDB database\r\n * @returns\r\n */\r\n async clearPersistent(): Promise<boolean> {\r\n try {\r\n this.logger.verbose(\"Deleting persistent keystore\");\r\n const dbDeleted = await this.indexedDBCache.deleteDatabase();\r\n if (dbDeleted) {\r\n this.logger.verbose(\"Persistent keystore deleted\");\r\n }\r\n \r\n return dbDeleted;\r\n } catch (e) {\r\n this.handleDatabaseAccessError(e);\r\n return false;\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nexport type CcsCredential = {\r\n credential: string,\r\n type: CcsCredentialType\r\n};\r\n\r\nexport enum CcsCredentialType {\r\n HOME_ACCOUNT_ID = \"home_account_id\",\r\n UPN = \"UPN\"\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ICrypto, IPerformanceClient, JoseHeader, Logger, PerformanceEvents, PkceCodes, SignedHttpRequest, SignedHttpRequestParameters } from \"@azure/msal-common\";\r\nimport { GuidGenerator } from \"./GuidGenerator\";\r\nimport { Base64Encode } from \"../encode/Base64Encode\";\r\nimport { Base64Decode } from \"../encode/Base64Decode\";\r\nimport { PkceGenerator } from \"./PkceGenerator\";\r\nimport { BrowserCrypto } from \"./BrowserCrypto\";\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { CryptoKeyStore } from \"../cache/CryptoKeyStore\";\r\nimport { CryptoOptions } from \"../config/Configuration\";\r\n\r\nexport type CachedKeyPair = {\r\n publicKey: CryptoKey,\r\n privateKey: CryptoKey,\r\n requestMethod?: string,\r\n requestUri?: string\r\n};\r\n\r\n/**\r\n * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and \r\n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\r\n */\r\nexport class CryptoOps implements ICrypto {\r\n\r\n private browserCrypto: BrowserCrypto;\r\n private guidGenerator: GuidGenerator;\r\n private b64Encode: Base64Encode;\r\n private b64Decode: Base64Decode;\r\n private pkceGenerator: PkceGenerator;\r\n private logger: Logger;\r\n\r\n /**\r\n * CryptoOps can be used in contexts outside a PCA instance,\r\n * meaning there won't be a performance manager available.\r\n */\r\n private performanceClient: IPerformanceClient | undefined;\r\n\r\n private static POP_KEY_USAGES: Array<KeyUsage> = [\"sign\", \"verify\"];\r\n private static EXTRACTABLE: boolean = true;\r\n private cache: CryptoKeyStore;\r\n\r\n constructor(logger: Logger, performanceClient?: IPerformanceClient, cryptoConfig?: CryptoOptions) {\r\n this.logger = logger;\r\n // Browser crypto needs to be validated first before any other classes can be set.\r\n this.browserCrypto = new BrowserCrypto(this.logger, cryptoConfig);\r\n this.b64Encode = new Base64Encode();\r\n this.b64Decode = new Base64Decode();\r\n this.guidGenerator = new GuidGenerator(this.browserCrypto);\r\n this.pkceGenerator = new PkceGenerator(this.browserCrypto);\r\n this.cache = new CryptoKeyStore(this.logger);\r\n this.performanceClient = performanceClient;\r\n }\r\n\r\n /**\r\n * Creates a new random GUID - used to populate state and nonce.\r\n * @returns string (GUID)\r\n */\r\n createNewGuid(): string {\r\n return this.guidGenerator.generateGuid();\r\n }\r\n\r\n /**\r\n * Encodes input string to base64.\r\n * @param input \r\n */\r\n base64Encode(input: string): string {\r\n return this.b64Encode.encode(input);\r\n } \r\n \r\n /**\r\n * Decodes input string from base64.\r\n * @param input \r\n */\r\n base64Decode(input: string): string {\r\n return this.b64Decode.decode(input);\r\n }\r\n\r\n /**\r\n * Generates PKCE codes used in Authorization Code Flow.\r\n */\r\n async generatePkceCodes(): Promise<PkceCodes> {\r\n return this.pkceGenerator.generateCodes();\r\n }\r\n\r\n /**\r\n * Generates a keypair, stores it and returns a thumbprint\r\n * @param request\r\n */\r\n async getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise<string> {\r\n const publicKeyThumbMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, request.correlationId);\r\n\r\n // Generate Keypair\r\n const keyPair: CryptoKeyPair = await this.browserCrypto.generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES);\r\n\r\n // Generate Thumbprint for Public Key\r\n const publicKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.publicKey);\r\n \r\n const pubKeyThumprintObj: JsonWebKey = {\r\n e: publicKeyJwk.e,\r\n kty: publicKeyJwk.kty,\r\n n: publicKeyJwk.n\r\n };\r\n \r\n const publicJwkString: string = BrowserStringUtils.getSortedObjectString(pubKeyThumprintObj);\r\n const publicJwkHash = await this.hashString(publicJwkString);\r\n\r\n // Generate Thumbprint for Private Key\r\n const privateKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.privateKey);\r\n // Re-import private key to make it unextractable\r\n const unextractablePrivateKey: CryptoKey = await this.browserCrypto.importJwk(privateKeyJwk, false, [\"sign\"]);\r\n\r\n // Store Keypair data in keystore\r\n await this.cache.asymmetricKeys.setItem(\r\n publicJwkHash, \r\n {\r\n privateKey: unextractablePrivateKey,\r\n publicKey: keyPair.publicKey,\r\n requestMethod: request.resourceRequestMethod,\r\n requestUri: request.resourceRequestUri\r\n }\r\n );\r\n\r\n if (publicKeyThumbMeasurement) {\r\n publicKeyThumbMeasurement.endMeasurement({\r\n success: true\r\n });\r\n }\r\n\r\n return publicJwkHash;\r\n }\r\n\r\n /**\r\n * Removes cryptographic keypair from key store matching the keyId passed in\r\n * @param kid \r\n */\r\n async removeTokenBindingKey(kid: string): Promise<boolean> {\r\n await this.cache.asymmetricKeys.removeItem(kid);\r\n const keyFound = await this.cache.asymmetricKeys.containsKey(kid);\r\n return !keyFound;\r\n }\r\n\r\n /**\r\n * Removes all cryptographic keys from IndexedDB storage\r\n */\r\n async clearKeystore(): Promise<boolean> {\r\n return await this.cache.clear();\r\n }\r\n\r\n /**\r\n * Signs the given object as a jwt payload with private key retrieved by given kid.\r\n * @param payload \r\n * @param kid \r\n */\r\n async signJwt(payload: SignedHttpRequest, kid: string, correlationId?: string): Promise<string> {\r\n const signJwtMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsSignJwt, correlationId);\r\n const cachedKeyPair = await this.cache.asymmetricKeys.getItem(kid);\r\n \r\n if (!cachedKeyPair) {\r\n throw BrowserAuthError.createSigningKeyNotFoundInStorageError(kid);\r\n }\r\n\r\n // Get public key as JWK\r\n const publicKeyJwk = await this.browserCrypto.exportJwk(cachedKeyPair.publicKey);\r\n const publicKeyJwkString = BrowserStringUtils.getSortedObjectString(publicKeyJwk);\r\n\r\n // Base64URL encode public key thumbprint with keyId only: BASE64URL({ kid: \"FULL_PUBLIC_KEY_HASH\" })\r\n const encodedKeyIdThumbprint = this.b64Encode.urlEncode(JSON.stringify({ kid: kid }));\r\n \r\n // Generate header\r\n const shrHeader = JoseHeader.getShrHeaderString({ kid: encodedKeyIdThumbprint, alg: publicKeyJwk.alg });\r\n const encodedShrHeader = this.b64Encode.urlEncode(shrHeader);\r\n\r\n // Generate payload\r\n payload.cnf = {\r\n jwk: JSON.parse(publicKeyJwkString)\r\n };\r\n const encodedPayload = this.b64Encode.urlEncode(JSON.stringify(payload));\r\n\r\n // Form token string\r\n const tokenString = `${encodedShrHeader}.${encodedPayload}`;\r\n\r\n // Sign token\r\n const tokenBuffer = BrowserStringUtils.stringToArrayBuffer(tokenString);\r\n const signatureBuffer = await this.browserCrypto.sign(cachedKeyPair.privateKey, tokenBuffer);\r\n const encodedSignature = this.b64Encode.urlEncodeArr(new Uint8Array(signatureBuffer));\r\n\r\n const signedJwt = `${tokenString}.${encodedSignature}`;\r\n\r\n if (signJwtMeasurement) {\r\n signJwtMeasurement.endMeasurement({\r\n success: true\r\n });\r\n }\r\n\r\n return signedJwt;\r\n }\r\n\r\n /**\r\n * Returns the SHA-256 hash of an input string\r\n * @param plainText\r\n */\r\n async hashString(plainText: string): Promise<string> {\r\n const hashBuffer: ArrayBuffer = await this.browserCrypto.sha256Digest(plainText);\r\n const hashBytes = new Uint8Array(hashBuffer);\r\n return this.b64Encode.urlEncodeArr(hashBytes);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ApplicationTelemetry } from \"../../config/ClientConfiguration\";\r\nimport { Logger } from \"../../logger/Logger\";\r\nimport {\r\n InProgressPerformanceEvent,\r\n IPerformanceClient,\r\n PerformanceCallbackFunction,\r\n QueueMeasurement\r\n} from \"./IPerformanceClient\";\r\nimport { IPerformanceMeasurement } from \"./IPerformanceMeasurement\";\r\nimport {\r\n Counters,\r\n IntFields,\r\n PerformanceEvent,\r\n PerformanceEvents,\r\n PerformanceEventStatus,\r\n StaticFields\r\n} from \"./PerformanceEvent\";\r\n\r\nexport interface PreQueueEvent {\r\n name: PerformanceEvents;\r\n time: number;\r\n}\r\n\r\nexport abstract class PerformanceClient implements IPerformanceClient {\r\n protected authority: string;\r\n protected libraryName: string;\r\n protected libraryVersion: string;\r\n protected applicationTelemetry: ApplicationTelemetry;\r\n protected clientId: string;\r\n protected logger: Logger;\r\n protected callbacks: Map<string, PerformanceCallbackFunction>;\r\n\r\n /**\r\n * Multiple events with the same correlation id.\r\n * @protected\r\n * @type {Map<string, PerformanceEvent>}\r\n */\r\n protected eventsByCorrelationId: Map<string, PerformanceEvent>;\r\n\r\n /**\r\n * Map of pre-queue times by correlation Id\r\n *\r\n * @protected\r\n * @type {Map<string, PreQueueEvent>}\r\n */\r\n protected preQueueTimeByCorrelationId: Map<string, PreQueueEvent>;\r\n\r\n /**\r\n * Map of queue measurements by correlation Id\r\n *\r\n * @protected\r\n * @type {Map<string, Array<QueueMeasurement>>}\r\n */\r\n protected queueMeasurements: Map<string, Array<QueueMeasurement>>;\r\n\r\n /**\r\n * Creates an instance of PerformanceClient,\r\n * an abstract class containing core performance telemetry logic.\r\n *\r\n * @constructor\r\n * @param {string} clientId Client ID of the application\r\n * @param {string} authority Authority used by the application\r\n * @param {Logger} logger Logger used by the application\r\n * @param {string} libraryName Name of the library\r\n * @param {string} libraryVersion Version of the library\r\n */\r\n constructor(clientId: string, authority: string, logger: Logger, libraryName: string, libraryVersion: string, applicationTelemetry: ApplicationTelemetry) {\r\n this.authority = authority;\r\n this.libraryName = libraryName;\r\n this.libraryVersion = libraryVersion;\r\n this.applicationTelemetry = applicationTelemetry;\r\n this.clientId = clientId;\r\n this.logger = logger;\r\n this.callbacks = new Map();\r\n this.eventsByCorrelationId = new Map();\r\n this.queueMeasurements = new Map();\r\n this.preQueueTimeByCorrelationId = new Map();\r\n }\r\n\r\n /**\r\n * Generates and returns a unique id, typically a guid.\r\n *\r\n * @abstract\r\n * @returns {string}\r\n */\r\n abstract generateId(): string;\r\n\r\n /**\r\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\r\n * Note: this function can be changed to abstract at the next major version bump.\r\n *\r\n * @param {string} measureName\r\n * @param {string} correlationId\r\n * @returns {IPerformanceMeasurement}\r\n */\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n startPerformanceMeasurement(measureName: string, correlationId: string): IPerformanceMeasurement {\r\n return {} as IPerformanceMeasurement;\r\n }\r\n\r\n /**\r\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\r\n * Note: this incorrectly-named function will be removed at the next major version bump.\r\n *\r\n * @param {string} measureName\r\n * @param {string} correlationId\r\n * @returns {IPerformanceMeasurement}\r\n */\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n startPerformanceMeasuremeant(measureName: string, correlationId: string): IPerformanceMeasurement {\r\n return {} as IPerformanceMeasurement;\r\n }\r\n\r\n /**\r\n * Sets pre-queue time by correlation Id\r\n *\r\n * @abstract\r\n * @param {PerformanceEvents} eventName\r\n * @param {string} correlationId\r\n * @returns\r\n */\r\n abstract setPreQueueTime(eventName: PerformanceEvents, correlationId?: string): void;\r\n\r\n /**\r\n * Get integral fields.\r\n * Override to change the set.\r\n */\r\n getIntFields(): ReadonlySet<string> {\r\n return IntFields;\r\n }\r\n\r\n /**\r\n * Gets map of pre-queue times by correlation Id\r\n *\r\n * @param {PerformanceEvents} eventName\r\n * @param {string} correlationId\r\n * @returns {number}\r\n */\r\n getPreQueueTime(eventName: PerformanceEvents, correlationId: string): number | void {\r\n const preQueueEvent: PreQueueEvent | undefined = this.preQueueTimeByCorrelationId.get(correlationId);\r\n\r\n if (!preQueueEvent) {\r\n this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${correlationId}, unable to add queue measurement`);\r\n return;\r\n } else if (preQueueEvent.name !== eventName) {\r\n this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue time found for ${eventName}, unable to add queue measurement`);\r\n return;\r\n }\r\n\r\n return preQueueEvent.time;\r\n }\r\n\r\n /**\r\n * Calculates the difference between current time and time when function was queued.\r\n * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same.\r\n *\r\n * @param {number} preQueueTime\r\n * @param {number} currentTime\r\n * @returns {number}\r\n */\r\n calculateQueuedTime(preQueueTime: number, currentTime: number): number {\r\n if (preQueueTime < 1) {\r\n this.logger.trace(`PerformanceClient: preQueueTime should be a positive integer and not ${preQueueTime}`);\r\n return 0;\r\n }\r\n\r\n if (currentTime < 1) {\r\n this.logger.trace(`PerformanceClient: currentTime should be a positive integer and not ${currentTime}`);\r\n return 0;\r\n }\r\n\r\n if (currentTime < preQueueTime) {\r\n this.logger.trace(\"PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved\");\r\n return 0;\r\n }\r\n\r\n return currentTime-preQueueTime;\r\n }\r\n\r\n /**\r\n * Adds queue measurement time to QueueMeasurements array for given correlation ID.\r\n *\r\n * @param {PerformanceEvents} eventName\r\n * @param {?string} correlationId\r\n * @param {?number} queueTime\r\n * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements\r\n * @returns\r\n */\r\n addQueueMeasurement(eventName: PerformanceEvents, correlationId?: string, queueTime?: number, manuallyCompleted?: boolean): void {\r\n if (!correlationId) {\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: correlationId not provided for ${eventName}, cannot add queue measurement`);\r\n return;\r\n }\r\n\r\n if (queueTime === 0) {\r\n // Possible for there to be no queue time after calculation\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: queue time provided for ${eventName} is ${queueTime}`);\r\n } else if (!queueTime) {\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: no queue time provided for ${eventName}`);\r\n return;\r\n }\r\n\r\n const queueMeasurement: QueueMeasurement = {eventName, queueTime, manuallyCompleted};\r\n\r\n // Adds to existing correlation Id if present in queueMeasurements\r\n const existingMeasurements = this.queueMeasurements.get(correlationId);\r\n if (existingMeasurements) {\r\n existingMeasurements.push(queueMeasurement);\r\n this.queueMeasurements.set(correlationId, existingMeasurements);\r\n } else {\r\n // Sets new correlation Id if not present in queueMeasurements\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: adding correlationId ${correlationId} to queue measurements`);\r\n const measurementArray = [queueMeasurement];\r\n this.queueMeasurements.set(correlationId, measurementArray);\r\n }\r\n // Delete processed pre-queue event.\r\n this.preQueueTimeByCorrelationId.delete(correlationId);\r\n }\r\n\r\n /**\r\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {?string} [correlationId]\r\n * @returns {InProgressPerformanceEvent}\r\n */\r\n startMeasurement(measureName: PerformanceEvents, correlationId?: string): InProgressPerformanceEvent {\r\n // Generate a placeholder correlation if the request does not provide one\r\n const eventCorrelationId = correlationId || this.generateId();\r\n if (!correlationId) {\r\n this.logger.info(`PerformanceClient: No correlation id provided for ${measureName}, generating`, eventCorrelationId);\r\n }\r\n\r\n // Duplicate code to address spelling error will be removed at the next major version bump.\r\n this.logger.trace(`PerformanceClient: Performance measurement started for ${measureName}`, eventCorrelationId);\r\n const performanceMeasurement = this.startPerformanceMeasuremeant(measureName, eventCorrelationId);\r\n performanceMeasurement.startMeasurement();\r\n\r\n const inProgressEvent: PerformanceEvent = {\r\n eventId: this.generateId(),\r\n status: PerformanceEventStatus.InProgress,\r\n authority: this.authority,\r\n libraryName: this.libraryName,\r\n libraryVersion: this.libraryVersion,\r\n clientId: this.clientId,\r\n name: measureName,\r\n startTimeMs: Date.now(),\r\n correlationId: eventCorrelationId,\r\n appName: this.applicationTelemetry?.appName,\r\n appVersion: this.applicationTelemetry?.appVersion,\r\n };\r\n\r\n // Store in progress events so they can be discarded if not ended properly\r\n this.cacheEventByCorrelationId(inProgressEvent);\r\n\r\n // Return the event and functions the caller can use to properly end/flush the measurement\r\n return {\r\n endMeasurement: (event?: Partial<PerformanceEvent>): PerformanceEvent | null => {\r\n return this.endMeasurement({\r\n // Initial set of event properties\r\n ...inProgressEvent,\r\n // Properties set when event ends\r\n ...event\r\n },\r\n performanceMeasurement);\r\n },\r\n discardMeasurement: () => {\r\n return this.discardMeasurements(inProgressEvent.correlationId);\r\n },\r\n addStaticFields: (fields: StaticFields) => {\r\n return this.addStaticFields(fields, inProgressEvent.correlationId);\r\n },\r\n increment: (counters: Counters) => {\r\n return this.increment(counters, inProgressEvent.correlationId);\r\n },\r\n measurement: performanceMeasurement,\r\n event: inProgressEvent\r\n };\r\n\r\n }\r\n\r\n /**\r\n * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes,\r\n * as consumers should instead use the function returned by startMeasurement.\r\n * Adds a new field named as \"[event name]DurationMs\" for sub-measurements, completes and emits an event\r\n * otherwise.\r\n *\r\n * @param {PerformanceEvent} event\r\n * @param {IPerformanceMeasurement} measurement\r\n * @returns {(PerformanceEvent | null)}\r\n */\r\n endMeasurement(event: PerformanceEvent, measurement?: IPerformanceMeasurement): PerformanceEvent | null {\r\n const rootEvent: PerformanceEvent | undefined = this.eventsByCorrelationId.get(event.correlationId);\r\n if (!rootEvent) {\r\n this.logger.trace(`PerformanceClient: Measurement not found for ${event.eventId}`, event.correlationId);\r\n return null;\r\n }\r\n\r\n const isRoot = event.eventId === rootEvent.eventId;\r\n let queueInfo = {\r\n totalQueueTime: 0,\r\n totalQueueCount: 0,\r\n manuallyCompletedCount: 0\r\n };\r\n if (isRoot) {\r\n queueInfo = this.getQueueInfo(event.correlationId);\r\n this.discardCache(rootEvent.correlationId);\r\n } else {\r\n rootEvent.incompleteSubMeasurements?.delete(event.eventId);\r\n }\r\n\r\n measurement?.endMeasurement();\r\n const durationMs = measurement?.flushMeasurement();\r\n // null indicates no measurement was taken (e.g. needed performance APIs not present)\r\n if (!durationMs) {\r\n this.logger.trace(\"PerformanceClient: Performance measurement not taken\", rootEvent.correlationId);\r\n return null;\r\n }\r\n\r\n this.logger.trace(`PerformanceClient: Performance measurement ended for ${event.name}: ${durationMs} ms`, event.correlationId);\r\n\r\n // Add sub-measurement attribute to root event.\r\n if (!isRoot) {\r\n rootEvent[event.name + \"DurationMs\"] = Math.floor(durationMs);\r\n return { ...rootEvent };\r\n }\r\n\r\n let finalEvent: PerformanceEvent = { ...rootEvent, ...event };\r\n let incompleteSubsCount: number = 0;\r\n // Incomplete sub-measurements are discarded. They are likely an instrumentation bug that should be fixed.\r\n finalEvent.incompleteSubMeasurements?.forEach(subMeasurement => {\r\n this.logger.trace(`PerformanceClient: Incomplete submeasurement ${subMeasurement.name} found for ${event.name}`, finalEvent.correlationId);\r\n incompleteSubsCount++;\r\n });\r\n finalEvent.incompleteSubMeasurements = undefined;\r\n\r\n finalEvent = {\r\n ...finalEvent,\r\n durationMs: Math.round(durationMs),\r\n queuedTimeMs: queueInfo.totalQueueTime,\r\n queuedCount: queueInfo.totalQueueCount,\r\n queuedManuallyCompletedCount: queueInfo.manuallyCompletedCount,\r\n status: PerformanceEventStatus.Completed,\r\n incompleteSubsCount\r\n };\r\n this.truncateIntegralFields(finalEvent, this.getIntFields());\r\n this.emitEvents([finalEvent], event.correlationId);\r\n\r\n return finalEvent;\r\n }\r\n\r\n /**\r\n * Saves extra information to be emitted when the measurements are flushed\r\n * @param fields\r\n * @param correlationId\r\n */\r\n addStaticFields(fields: StaticFields, correlationId: string) : void {\r\n this.logger.trace(\"PerformanceClient: Updating static fields\");\r\n const event = this.eventsByCorrelationId.get(correlationId);\r\n if (event) {\r\n this.eventsByCorrelationId.set(correlationId, {...event, ...fields});\r\n } else {\r\n this.logger.trace(\"PerformanceClient: Event not found for\", correlationId);\r\n }\r\n }\r\n\r\n /**\r\n * Increment counters to be emitted when the measurements are flushed\r\n * @param counters {Counters}\r\n * @param correlationId {string} correlation identifier\r\n */\r\n increment(counters: Counters, correlationId: string): void {\r\n this.logger.trace(\"PerformanceClient: Updating counters\");\r\n const event = this.eventsByCorrelationId.get(correlationId);\r\n if (event) {\r\n for (const counter in counters) {\r\n if (!event.hasOwnProperty(counter)) {\r\n event[counter] = 0;\r\n }\r\n event[counter] += counters[counter];\r\n }\r\n } else {\r\n this.logger.trace(\"PerformanceClient: Event not found for\", correlationId);\r\n }\r\n }\r\n\r\n /**\r\n * Upserts event into event cache.\r\n * First key is the correlation id, second key is the event id.\r\n * Allows for events to be grouped by correlation id,\r\n * and to easily allow for properties on them to be updated.\r\n *\r\n * @private\r\n * @param {PerformanceEvent} event\r\n */\r\n private cacheEventByCorrelationId(event: PerformanceEvent) {\r\n const rootEvent = this.eventsByCorrelationId.get(event.correlationId);\r\n if (rootEvent) {\r\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} added/updated`, event.correlationId);\r\n rootEvent.incompleteSubMeasurements = rootEvent.incompleteSubMeasurements || new Map();\r\n rootEvent.incompleteSubMeasurements.set(event.eventId, {name: event.name, startTimeMs: event.startTimeMs });\r\n } else {\r\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} started`, event.correlationId);\r\n this.eventsByCorrelationId.set(event.correlationId, { ...event });\r\n }\r\n }\r\n\r\n private getQueueInfo(correlationId: string): { totalQueueTime: number, totalQueueCount: number, manuallyCompletedCount: number } {\r\n const queueMeasurementForCorrelationId = this.queueMeasurements.get(correlationId);\r\n if (!queueMeasurementForCorrelationId) {\r\n this.logger.trace(`PerformanceClient: no queue measurements found for for correlationId: ${correlationId}`);\r\n }\r\n\r\n let totalQueueTime = 0;\r\n let totalQueueCount = 0;\r\n let manuallyCompletedCount = 0;\r\n queueMeasurementForCorrelationId?.forEach((measurement) => {\r\n totalQueueTime += measurement.queueTime;\r\n totalQueueCount++;\r\n manuallyCompletedCount += measurement.manuallyCompleted ? 1 : 0;\r\n });\r\n\r\n return {\r\n totalQueueTime,\r\n totalQueueCount,\r\n manuallyCompletedCount\r\n };\r\n }\r\n\r\n /**\r\n * Removes measurements for a given correlation id.\r\n *\r\n * @param {string} correlationId\r\n */\r\n discardMeasurements(correlationId: string): void {\r\n this.logger.trace(\"PerformanceClient: Performance measurements discarded\", correlationId);\r\n this.eventsByCorrelationId.delete(correlationId);\r\n }\r\n\r\n /**\r\n * Removes cache for a given correlation id.\r\n *\r\n * @param {string} correlationId correlation identifier\r\n */\r\n private discardCache(correlationId: string): void {\r\n this.discardMeasurements(correlationId);\r\n\r\n this.logger.trace(\"PerformanceClient: QueueMeasurements discarded\", correlationId);\r\n this.queueMeasurements.delete(correlationId);\r\n\r\n this.logger.trace(\"PerformanceClient: Pre-queue times discarded\", correlationId);\r\n this.preQueueTimeByCorrelationId.delete(correlationId);\r\n }\r\n\r\n /**\r\n * Registers a callback function to receive performance events.\r\n *\r\n * @param {PerformanceCallbackFunction} callback\r\n * @returns {string}\r\n */\r\n addPerformanceCallback(callback: PerformanceCallbackFunction): string {\r\n const callbackId = this.generateId();\r\n this.callbacks.set(callbackId, callback);\r\n this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${callbackId}`);\r\n\r\n return callbackId;\r\n }\r\n\r\n /**\r\n * Removes a callback registered with addPerformanceCallback.\r\n *\r\n * @param {string} callbackId\r\n * @returns {boolean}\r\n */\r\n removePerformanceCallback(callbackId: string): boolean {\r\n const result = this.callbacks.delete(callbackId);\r\n\r\n if (result) {\r\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} removed.`);\r\n } else {\r\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} not removed.`);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Emits events to all registered callbacks.\r\n *\r\n * @param {PerformanceEvent[]} events\r\n * @param {?string} [correlationId]\r\n */\r\n emitEvents(events: PerformanceEvent[], correlationId: string): void {\r\n this.logger.verbose(\"PerformanceClient: Emitting performance events\", correlationId);\r\n\r\n this.callbacks.forEach((callback: PerformanceCallbackFunction, callbackId: string) => {\r\n this.logger.trace(`PerformanceClient: Emitting event to callback ${callbackId}`, correlationId);\r\n callback.apply(null, [events]);\r\n });\r\n }\r\n\r\n /**\r\n * Enforce truncation of integral fields in performance event.\r\n * @param {PerformanceEvent} event performance event to update.\r\n * @param {Set<string>} intFields integral fields.\r\n */\r\n private truncateIntegralFields(event: PerformanceEvent, intFields: ReadonlySet<string>): void {\r\n intFields.forEach((key) => {\r\n if (key in event && typeof event[key] === \"number\") {\r\n event[key] = Math.floor(event[key]);\r\n }\r\n });\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { IPerformanceClient } from \"./IPerformanceClient\";\r\nimport { IPerformanceMeasurement } from \"./IPerformanceMeasurement\";\r\nimport { PerformanceClient } from \"./PerformanceClient\";\r\nimport { PerformanceEvents } from \"./PerformanceEvent\";\r\n\r\nexport class StubPerformanceMeasurement implements IPerformanceMeasurement {\r\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\r\n startMeasurement(): void { }\r\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\r\n endMeasurement(): void { }\r\n flushMeasurement(): number | null {\r\n return null;\r\n }\r\n \r\n}\r\n\r\nexport class StubPerformanceClient extends PerformanceClient implements IPerformanceClient {\r\n generateId(): string {\r\n return \"callback-id\";\r\n }\r\n \r\n startPerformanceMeasuremeant(): IPerformanceMeasurement {\r\n return new StubPerformanceMeasurement();\r\n }\r\n\r\n startPerformanceMeasurement(): IPerformanceMeasurement {\r\n return new StubPerformanceMeasurement();\r\n }\r\n\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n calculateQueuedTime(preQueueTime: number, currentTime: number): number {\r\n return 0;\r\n }\r\n\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n addQueueMeasurement(eventName: PerformanceEvents, correlationId: string, queueTime: number): void {\r\n return;\r\n }\r\n\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n setPreQueueTime(eventName: PerformanceEvents, correlationId?: string | undefined): void {\r\n return;\r\n }\r\n\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\r\nimport { SignedHttpRequest } from \"./SignedHttpRequest\";\r\n\r\n/**\r\n * The PkceCodes type describes the structure\r\n * of objects that contain PKCE code\r\n * challenge and verifier pairs\r\n */\r\nexport type PkceCodes = {\r\n verifier: string,\r\n challenge: string\r\n};\r\n\r\nexport type SignedHttpRequestParameters = Pick<BaseAuthRequest, \"resourceRequestMethod\" | \"resourceRequestUri\" | \"shrClaims\" | \"shrNonce\" > & {\r\n correlationId?: string\r\n};\r\n\r\n/**\r\n * Interface for crypto functions used by library\r\n */\r\nexport interface ICrypto {\r\n /**\r\n * Creates a guid randomly.\r\n */\r\n createNewGuid(): string;\r\n /**\r\n * base64 Encode string\r\n * @param input \r\n */\r\n base64Encode(input: string): string;\r\n /**\r\n * base64 decode string\r\n * @param input \r\n */\r\n base64Decode(input: string): string;\r\n /**\r\n * Generate PKCE codes for OAuth. See RFC here: https://tools.ietf.org/html/rfc7636\r\n */\r\n generatePkceCodes(): Promise<PkceCodes>;\r\n /**\r\n * Generates an JWK RSA S256 Thumbprint\r\n * @param request\r\n */\r\n getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise<string>;\r\n /**\r\n * Removes cryptographic keypair from key store matching the keyId passed in\r\n * @param kid \r\n */\r\n removeTokenBindingKey(kid: string): Promise<boolean>;\r\n /**\r\n * Removes all cryptographic keys from IndexedDB storage\r\n */\r\n clearKeystore(): Promise<boolean>;\r\n /** \r\n * Returns a signed proof-of-possession token with a given acces token that contains a cnf claim with the required kid.\r\n * @param accessToken \r\n */\r\n signJwt(payload: SignedHttpRequest, kid: string, correlationId?: string): Promise<string>;\r\n /**\r\n * Returns the SHA-256 hash of an input string\r\n * @param plainText\r\n */\r\n hashString(plainText: string): Promise<string>;\r\n}\r\n\r\nexport const DEFAULT_CRYPTO_IMPLEMENTATION: ICrypto = {\r\n createNewGuid: (): string => {\r\n const notImplErr = \"Crypto interface - createNewGuid() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Decode: (): string => {\r\n const notImplErr = \"Crypto interface - base64Decode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Encode: (): string => {\r\n const notImplErr = \"Crypto interface - base64Encode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async generatePkceCodes(): Promise<PkceCodes> {\r\n const notImplErr = \"Crypto interface - generatePkceCodes() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async getPublicKeyThumbprint(): Promise<string> {\r\n const notImplErr = \"Crypto interface - getPublicKeyThumbprint() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async removeTokenBindingKey(): Promise<boolean> {\r\n const notImplErr = \"Crypto interface - removeTokenBindingKey() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async clearKeystore(): Promise<boolean> {\r\n const notImplErr = \"Crypto interface - clearKeystore() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async signJwt(): Promise<string> {\r\n const notImplErr = \"Crypto interface - signJwt() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async hashString(): Promise<string> {\r\n const notImplErr = \"Crypto interface - hashString() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Separators, CredentialType, CacheType, Constants, AuthenticationScheme } from \"../../utils/Constants\";\r\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\r\n\r\n/**\r\n * Base type for credentials to be stored in the cache: eg: ACCESS_TOKEN, ID_TOKEN etc\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: <home_account_id*>-<environment>-<credential_type>-<client_id>-<realm*>-<target*>-<requestedClaims*>-<scheme*>\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * tokenType: Matches the authentication scheme for which the token was issued (i.e. Bearer or pop)\r\n * requestedClaimsHash: Matches the SHA 256 hash of the claims object included in the token request\r\n * userAssertionHash: Matches the SHA 256 hash of the obo_assertion for the OBO flow\r\n * }\r\n */\r\nexport class CredentialEntity {\r\n homeAccountId: string;\r\n environment: string;\r\n credentialType: CredentialType;\r\n clientId: string;\r\n secret: string;\r\n familyId?: string;\r\n realm?: string;\r\n target?: string;\r\n userAssertionHash?: string;\r\n tokenType?: AuthenticationScheme;\r\n keyId?: string;\r\n requestedClaimsHash?: string;\r\n\r\n /**\r\n * Generate Account Id key component as per the schema: <home_account_id>-<environment>\r\n */\r\n generateAccountId(): string {\r\n return CredentialEntity.generateAccountIdForCacheKey(this.homeAccountId, this.environment);\r\n }\r\n\r\n /**\r\n * Generate Credential Id key component as per the schema: <credential_type>-<client_id>-<realm>\r\n */\r\n generateCredentialId(): string {\r\n return CredentialEntity.generateCredentialIdForCacheKey(\r\n this.credentialType,\r\n this.clientId,\r\n this.realm,\r\n this.familyId\r\n );\r\n }\r\n\r\n /**\r\n * Generate target key component as per schema: <target>\r\n */\r\n generateTarget(): string {\r\n return CredentialEntity.generateTargetForCacheKey(this.target);\r\n }\r\n\r\n /**\r\n * generates credential key\r\n */\r\n generateCredentialKey(): string {\r\n return CredentialEntity.generateCredentialCacheKey(\r\n this.homeAccountId,\r\n this.environment,\r\n this.credentialType,\r\n this.clientId,\r\n this.realm,\r\n this.target,\r\n this.familyId,\r\n this.tokenType,\r\n this.requestedClaimsHash,\r\n );\r\n }\r\n\r\n /**\r\n * returns the type of the cache (in this case credential)\r\n */\r\n generateType(): number {\r\n switch (this.credentialType) {\r\n case CredentialType.ID_TOKEN:\r\n return CacheType.ID_TOKEN;\r\n case CredentialType.ACCESS_TOKEN:\r\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\r\n return CacheType.ACCESS_TOKEN;\r\n case CredentialType.REFRESH_TOKEN:\r\n return CacheType.REFRESH_TOKEN;\r\n default: {\r\n throw ClientAuthError.createUnexpectedCredentialTypeError();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * generates credential key\r\n * <home_account_id*>-\\<environment>-<credential_type>-<client_id>-<realm\\*>-<target\\*>-<scheme\\*>\r\n */\r\n static generateCredentialCacheKey(\r\n homeAccountId: string,\r\n environment: string,\r\n credentialType: CredentialType,\r\n clientId: string,\r\n realm?: string,\r\n target?: string,\r\n familyId?: string,\r\n tokenType?: AuthenticationScheme,\r\n requestedClaimsHash?: string\r\n ): string {\r\n const credentialKey = [\r\n this.generateAccountIdForCacheKey(homeAccountId, environment),\r\n this.generateCredentialIdForCacheKey(credentialType, clientId, realm, familyId),\r\n this.generateTargetForCacheKey(target),\r\n this.generateClaimsHashForCacheKey(requestedClaimsHash),\r\n this.generateSchemeForCacheKey(tokenType)\r\n ];\r\n\r\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * generates Account Id for keys\r\n * @param homeAccountId\r\n * @param environment\r\n */\r\n private static generateAccountIdForCacheKey(\r\n homeAccountId: string,\r\n environment: string\r\n ): string {\r\n const accountId: Array<string> = [homeAccountId, environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Generates Credential Id for keys\r\n * @param credentialType\r\n * @param realm\r\n * @param clientId\r\n * @param familyId\r\n */\r\n private static generateCredentialIdForCacheKey(\r\n credentialType: CredentialType,\r\n clientId: string,\r\n realm?: string,\r\n familyId?: string\r\n ): string {\r\n const clientOrFamilyId =\r\n credentialType === CredentialType.REFRESH_TOKEN\r\n ? familyId || clientId\r\n : clientId;\r\n const credentialId: Array<string> = [\r\n credentialType,\r\n clientOrFamilyId,\r\n realm || Constants.EMPTY_STRING,\r\n ];\r\n\r\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Generate target key component as per schema: <target>\r\n */\r\n private static generateTargetForCacheKey(scopes?: string): string {\r\n return (scopes || Constants.EMPTY_STRING).toLowerCase();\r\n }\r\n\r\n /**\r\n * Generate requested claims key component as per schema: <requestedClaims>\r\n */\r\n private static generateClaimsHashForCacheKey(requestedClaimsHash?: string): string {\r\n return(requestedClaimsHash || Constants.EMPTY_STRING).toLowerCase();\r\n }\r\n\r\n /**\r\n * Generate scheme key componenet as per schema: <scheme>\r\n */\r\n private static generateSchemeForCacheKey(tokenType?: string): string {\r\n /*\r\n * PoP Tokens and SSH certs include scheme in cache key\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n return (tokenType && tokenType.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? tokenType.toLowerCase() : Constants.EMPTY_STRING;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CredentialEntity } from \"./CredentialEntity\";\r\nimport { CredentialType } from \"../../utils/Constants\";\r\n\r\n/**\r\n * ID_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-idtoken-clientId-contoso.com-\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * }\r\n */\r\nexport class IdTokenEntity extends CredentialEntity {\r\n realm: string;\r\n\r\n /**\r\n * Create IdTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n static createIdTokenEntity(\r\n homeAccountId: string,\r\n environment: string,\r\n idToken: string,\r\n clientId: string,\r\n tenantId: string,\r\n ): IdTokenEntity {\r\n const idTokenEntity = new IdTokenEntity();\r\n\r\n idTokenEntity.credentialType = CredentialType.ID_TOKEN;\r\n idTokenEntity.homeAccountId = homeAccountId;\r\n idTokenEntity.environment = environment;\r\n idTokenEntity.clientId = clientId;\r\n idTokenEntity.secret = idToken;\r\n idTokenEntity.realm = tenantId;\r\n\r\n return idTokenEntity;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isIdTokenEntity(entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.ID_TOKEN\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientAuthError } from \"./ClientAuthError\";\r\n\r\n/**\r\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const ClientConfigurationErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n claimsRequestParsingError: {\r\n code: \"claims_request_parsing_error\",\r\n desc: \"Could not parse the given claims request object.\"\r\n },\r\n authorityUriInsecure: {\r\n code: \"authority_uri_insecure\",\r\n desc: \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\"\r\n },\r\n urlParseError: {\r\n code: \"url_parse_error\",\r\n desc: \"URL could not be parsed into appropriate segments.\"\r\n },\r\n urlEmptyError: {\r\n code: \"empty_url_error\",\r\n desc: \"URL was empty or null.\"\r\n },\r\n emptyScopesError: {\r\n code: \"empty_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\"\r\n },\r\n nonArrayScopesError: {\r\n code: \"nonarray_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as non-array.\"\r\n },\r\n clientIdSingleScopeError: {\r\n code: \"clientid_input_scopes_error\",\r\n desc: \"Client ID can only be provided as a single scope.\"\r\n },\r\n invalidPrompt: {\r\n code: \"invalid_prompt_value\",\r\n desc: \"Supported prompt values are 'login', 'select_account', 'consent', 'create', 'none' and 'no_session'. Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest\",\r\n },\r\n invalidClaimsRequest: {\r\n code: \"invalid_claims\",\r\n desc: \"Given claims parameter must be a stringified JSON object.\"\r\n },\r\n tokenRequestEmptyError: {\r\n code: \"token_request_empty\",\r\n desc: \"Token request was empty and not found in cache.\"\r\n },\r\n logoutRequestEmptyError: {\r\n code: \"logout_request_empty\",\r\n desc: \"The logout request was null or undefined.\"\r\n },\r\n invalidCodeChallengeMethod: {\r\n code: \"invalid_code_challenge_method\",\r\n desc: \"code_challenge_method passed is invalid. Valid values are \\\"plain\\\" and \\\"S256\\\".\"\r\n },\r\n invalidCodeChallengeParams: {\r\n code: \"pkce_params_missing\",\r\n desc: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\"\r\n },\r\n invalidCloudDiscoveryMetadata: {\r\n code: \"invalid_cloud_discovery_metadata\",\r\n desc: \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\"\r\n },\r\n invalidAuthorityMetadata: {\r\n code: \"invalid_authority_metadata\",\r\n desc: \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\"\r\n },\r\n untrustedAuthority: {\r\n code: \"untrusted_authority\",\r\n desc: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\"\r\n },\r\n invalidAzureCloudInstance: {\r\n code: \"invalid_azure_cloud_instance\",\r\n desc: \"Invalid AzureCloudInstance provided. Please refer MSAL JS docs: aks.ms/msaljs/azure_cloud_instance for valid values\"\r\n },\r\n missingSshJwk: {\r\n code: \"missing_ssh_jwk\",\r\n desc: \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\"\r\n },\r\n missingSshKid: {\r\n code: \"missing_ssh_kid\",\r\n desc: \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\"\r\n },\r\n missingNonceAuthenticationHeader: {\r\n code: \"missing_nonce_authentication_header\",\r\n desc: \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\"\r\n },\r\n invalidAuthenticationHeader: {\r\n code: \"invalid_authentication_header\",\r\n desc: \"Invalid authentication header provided\"\r\n },\r\n authorityMismatch: {\r\n code: \"authority_mismatch\",\r\n desc: \"Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.\"\r\n }\r\n};\r\n\r\n/**\r\n * Error thrown when there is an error in configuration of the MSAL.js library.\r\n */\r\nexport class ClientConfigurationError extends ClientAuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n this.name = \"ClientConfigurationError\";\r\n Object.setPrototypeOf(this, ClientConfigurationError.prototype);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n static createRedirectUriEmptyError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.redirectUriNotSet.code,\r\n ClientConfigurationErrorMessage.redirectUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n static createPostLogoutRedirectUriEmptyError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.postLogoutUriNotSet.code,\r\n ClientConfigurationErrorMessage.postLogoutUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the claims request could not be successfully parsed\r\n */\r\n static createClaimsRequestParsingError(claimsRequestParseError: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.claimsRequestParsingError.code,\r\n `${ClientConfigurationErrorMessage.claimsRequestParsingError.desc} Given value: ${claimsRequestParseError}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if authority uri is given an insecure protocol.\r\n * @param urlString\r\n */\r\n static createInsecureAuthorityUriError(urlString: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.authorityUriInsecure.code,\r\n `${ClientConfigurationErrorMessage.authorityUriInsecure.desc} Given URI: ${urlString}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if URL string does not parse into separate segments.\r\n * @param urlString\r\n */\r\n static createUrlParseError(urlParseError: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlParseError.code,\r\n `${ClientConfigurationErrorMessage.urlParseError.desc} Given Error: ${urlParseError}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if URL string is empty or null.\r\n * @param urlString\r\n */\r\n static createUrlEmptyError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlEmptyError.code,\r\n ClientConfigurationErrorMessage.urlEmptyError.desc);\r\n }\r\n\r\n /**\r\n * Error thrown when scopes are empty.\r\n * @param scopesValue\r\n */\r\n static createEmptyScopesArrayError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.emptyScopesError.code,\r\n `${ClientConfigurationErrorMessage.emptyScopesError.desc}`);\r\n }\r\n\r\n /**\r\n * Error thrown when client id scope is not provided as single scope.\r\n * @param inputScopes\r\n */\r\n static createClientIdSingleScopeError(inputScopes: Array<string>): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.clientIdSingleScopeError.code,\r\n `${ClientConfigurationErrorMessage.clientIdSingleScopeError.desc} Given Scopes: ${inputScopes}`);\r\n }\r\n\r\n /**\r\n * Error thrown when prompt is not an allowed type.\r\n * @param promptValue\r\n */\r\n static createInvalidPromptError(promptValue: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidPrompt.code,\r\n `${ClientConfigurationErrorMessage.invalidPrompt.desc} Given value: ${promptValue}`);\r\n }\r\n\r\n /**\r\n * Creates error thrown when claims parameter is not a stringified JSON object\r\n */\r\n static createInvalidClaimsRequestError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidClaimsRequest.code,\r\n ClientConfigurationErrorMessage.invalidClaimsRequest.desc);\r\n }\r\n\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n static createEmptyLogoutRequestError(): ClientConfigurationError {\r\n return new ClientConfigurationError(\r\n ClientConfigurationErrorMessage.logoutRequestEmptyError.code,\r\n ClientConfigurationErrorMessage.logoutRequestEmptyError.desc\r\n );\r\n }\r\n\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n static createEmptyTokenRequestError(): ClientConfigurationError {\r\n return new ClientConfigurationError(\r\n ClientConfigurationErrorMessage.tokenRequestEmptyError.code,\r\n ClientConfigurationErrorMessage.tokenRequestEmptyError.desc\r\n );\r\n }\r\n\r\n /**\r\n * Throws error when an invalid code_challenge_method is passed by the user\r\n */\r\n static createInvalidCodeChallengeMethodError(): ClientConfigurationError {\r\n return new ClientConfigurationError(\r\n ClientConfigurationErrorMessage.invalidCodeChallengeMethod.code,\r\n ClientConfigurationErrorMessage.invalidCodeChallengeMethod.desc\r\n );\r\n }\r\n\r\n /**\r\n * Throws error when both params: code_challenge and code_challenge_method are not passed together\r\n */\r\n static createInvalidCodeChallengeParamsError(): ClientConfigurationError {\r\n return new ClientConfigurationError(\r\n ClientConfigurationErrorMessage.invalidCodeChallengeParams.code,\r\n ClientConfigurationErrorMessage.invalidCodeChallengeParams.desc\r\n );\r\n }\r\n\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n static createInvalidCloudDiscoveryMetadataError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.code,\r\n ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.desc);\r\n }\r\n\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n static createInvalidAuthorityMetadataError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthorityMetadata.code,\r\n ClientConfigurationErrorMessage.invalidAuthorityMetadata.desc);\r\n }\r\n\r\n /**\r\n * Throws error when provided authority is not a member of the trusted host list\r\n */\r\n static createUntrustedAuthorityError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.untrustedAuthority.code,\r\n ClientConfigurationErrorMessage.untrustedAuthority.desc);\r\n }\r\n\r\n /**\r\n * Throws error when the AzureCloudInstance is set to an invalid value\r\n */\r\n static createInvalidAzureCloudInstanceError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAzureCloudInstance.code,\r\n ClientConfigurationErrorMessage.invalidAzureCloudInstance.desc);\r\n }\r\n\r\n /**\r\n * Throws an error when the authentication scheme is set to SSH but the SSH public key is omitted from the request\r\n */\r\n static createMissingSshJwkError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshJwk.code,\r\n ClientConfigurationErrorMessage.missingSshJwk.desc);\r\n }\r\n\r\n /**\r\n * Throws an error when the authentication scheme is set to SSH but the SSH public key ID is omitted from the request\r\n */\r\n static createMissingSshKidError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshKid.code,\r\n ClientConfigurationErrorMessage.missingSshKid.desc);\r\n }\r\n\r\n /**\r\n * Throws error when provided headers don't contain a header that a server nonce can be extracted from\r\n */\r\n static createMissingNonceAuthenticationHeadersError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.code,\r\n ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.desc);\r\n }\r\n\r\n /**\r\n * Throws error when a provided header is invalid in any way\r\n */\r\n static createInvalidAuthenticationHeaderError(invalidHeaderName: string, details: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthenticationHeader.code,\r\n `${ClientConfigurationErrorMessage.invalidAuthenticationHeader.desc}. Invalid header: ${invalidHeaderName}. Details: ${details}`);\r\n }\r\n \r\n /**\r\n * Create an error when the authority provided in request does not match authority provided in account or MSAL.js configuration.\r\n */\r\n static createAuthorityMismatchError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.authorityMismatch.code, ClientConfigurationErrorMessage.authorityMismatch.desc);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { Constants, OIDC_SCOPES } from \"../utils/Constants\";\r\n\r\n/**\r\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\r\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\r\n * to ensure uniqueness of strings.\r\n */\r\nexport class ScopeSet {\r\n // Scopes as a Set of strings\r\n private scopes: Set<string>;\r\n\r\n constructor(inputScopes: Array<string>) {\r\n // Filter empty string and null/undefined array items\r\n const scopeArr = inputScopes ? StringUtils.trimArrayEntries([...inputScopes]) : [];\r\n const filteredInput = scopeArr ? StringUtils.removeEmptyStringsFromArray(scopeArr) : [];\r\n\r\n // Validate and filter scopes (validate function throws if validation fails)\r\n this.validateInputScopes(filteredInput);\r\n\r\n this.scopes = new Set<string>(); // Iterator in constructor not supported by IE11\r\n filteredInput.forEach(scope => this.scopes.add(scope));\r\n }\r\n\r\n /**\r\n * Factory method to create ScopeSet from space-delimited string\r\n * @param inputScopeString\r\n * @param appClientId\r\n * @param scopesRequired\r\n */\r\n static fromString(inputScopeString: string): ScopeSet {\r\n const scopeString = inputScopeString || Constants.EMPTY_STRING;\r\n const inputScopes: Array<string> = scopeString.split(\" \");\r\n return new ScopeSet(inputScopes);\r\n }\r\n\r\n /**\r\n * Creates the set of scopes to search for in cache lookups\r\n * @param inputScopeString \r\n * @returns \r\n */\r\n static createSearchScopes(inputScopeString: Array<string>): ScopeSet {\r\n const scopeSet = new ScopeSet(inputScopeString);\r\n if (!scopeSet.containsOnlyOIDCScopes()) {\r\n scopeSet.removeOIDCScopes();\r\n } else {\r\n scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\r\n }\r\n\r\n return scopeSet;\r\n }\r\n\r\n /**\r\n * Used to validate the scopes input parameter requested by the developer.\r\n * @param {Array<string>} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.\r\n * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not\r\n */\r\n private validateInputScopes(inputScopes: Array<string>): void {\r\n // Check if scopes are required but not given or is an empty array\r\n if (!inputScopes || inputScopes.length < 1) {\r\n throw ClientConfigurationError.createEmptyScopesArrayError();\r\n }\r\n }\r\n\r\n /**\r\n * Check if a given scope is present in this set of scopes.\r\n * @param scope\r\n */\r\n containsScope(scope: string): boolean {\r\n const lowerCaseScopes = this.printScopesLowerCase().split(\" \");\r\n const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\r\n // compare lowercase scopes\r\n return !StringUtils.isEmpty(scope) ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) : false;\r\n }\r\n\r\n /**\r\n * Check if a set of scopes is present in this set of scopes.\r\n * @param scopeSet\r\n */\r\n containsScopeSet(scopeSet: ScopeSet): boolean {\r\n if (!scopeSet || scopeSet.scopes.size <= 0) {\r\n return false;\r\n }\r\n\r\n return (this.scopes.size >= scopeSet.scopes.size && scopeSet.asArray().every(scope => this.containsScope(scope)));\r\n }\r\n\r\n /**\r\n * Check if set of scopes contains only the defaults\r\n */\r\n containsOnlyOIDCScopes(): boolean {\r\n let defaultScopeCount = 0;\r\n OIDC_SCOPES.forEach((defaultScope: string) => {\r\n if (this.containsScope(defaultScope)) {\r\n defaultScopeCount += 1;\r\n }\r\n });\r\n\r\n return this.scopes.size === defaultScopeCount;\r\n }\r\n\r\n /**\r\n * Appends single scope if passed\r\n * @param newScope\r\n */\r\n appendScope(newScope: string): void {\r\n if (!StringUtils.isEmpty(newScope)) {\r\n this.scopes.add(newScope.trim());\r\n }\r\n }\r\n\r\n /**\r\n * Appends multiple scopes if passed\r\n * @param newScopes\r\n */\r\n appendScopes(newScopes: Array<string>): void {\r\n try {\r\n newScopes.forEach(newScope => this.appendScope(newScope));\r\n } catch (e) {\r\n throw ClientAuthError.createAppendScopeSetError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Removes element from set of scopes.\r\n * @param scope\r\n */\r\n removeScope(scope: string): void {\r\n if (StringUtils.isEmpty(scope)) {\r\n throw ClientAuthError.createRemoveEmptyScopeFromSetError(scope);\r\n }\r\n this.scopes.delete(scope.trim());\r\n }\r\n\r\n /**\r\n * Removes default scopes from set of scopes\r\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\r\n */\r\n removeOIDCScopes(): void {\r\n OIDC_SCOPES.forEach((defaultScope: string) => {\r\n this.scopes.delete(defaultScope);\r\n });\r\n }\r\n\r\n /**\r\n * Combines an array of scopes with the current set of scopes.\r\n * @param otherScopes\r\n */\r\n unionScopeSets(otherScopes: ScopeSet): Set<string> {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError();\r\n }\r\n const unionScopes = new Set<string>(); // Iterator in constructor not supported in IE11\r\n otherScopes.scopes.forEach(scope => unionScopes.add(scope.toLowerCase()));\r\n this.scopes.forEach(scope => unionScopes.add(scope.toLowerCase()));\r\n return unionScopes;\r\n }\r\n\r\n /**\r\n * Check if scopes intersect between this set and another.\r\n * @param otherScopes\r\n */\r\n intersectingScopeSets(otherScopes: ScopeSet): boolean {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError();\r\n }\r\n \r\n // Do not allow OIDC scopes to be the only intersecting scopes\r\n if (!otherScopes.containsOnlyOIDCScopes()) {\r\n otherScopes.removeOIDCScopes();\r\n }\r\n const unionScopes = this.unionScopeSets(otherScopes);\r\n const sizeOtherScopes = otherScopes.getScopeCount();\r\n const sizeThisScopes = this.getScopeCount();\r\n const sizeUnionScopes = unionScopes.size;\r\n return sizeUnionScopes < (sizeThisScopes + sizeOtherScopes);\r\n }\r\n\r\n /**\r\n * Returns size of set of scopes.\r\n */\r\n getScopeCount(): number {\r\n return this.scopes.size;\r\n }\r\n\r\n /**\r\n * Returns the scopes as an array of string values\r\n */\r\n asArray(): Array<string> {\r\n const array: Array<string> = [];\r\n this.scopes.forEach(val => array.push(val));\r\n return array;\r\n }\r\n\r\n /**\r\n * Prints scopes into a space-delimited string\r\n */\r\n printScopes(): string {\r\n if (this.scopes) {\r\n const scopeArr = this.asArray();\r\n return scopeArr.join(\" \");\r\n }\r\n return Constants.EMPTY_STRING;\r\n }\r\n\r\n /**\r\n * Prints scopes into a space-delimited lower-case string (used for caching)\r\n */\r\n printScopesLowerCase(): string {\r\n return this.printScopes().toLowerCase();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { TokenClaims } from \"./TokenClaims\";\r\nimport { DecodedAuthToken } from \"./DecodedAuthToken\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\n\r\n/**\r\n * JWT Token representation class. Parses token string and generates claims object.\r\n */\r\nexport class AuthToken {\r\n\r\n // Raw Token string\r\n rawToken: string;\r\n // Claims inside token\r\n claims: TokenClaims;\r\n constructor(rawToken: string, crypto: ICrypto) {\r\n if (StringUtils.isEmpty(rawToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(rawToken);\r\n }\r\n\r\n this.rawToken = rawToken;\r\n this.claims = AuthToken.extractTokenClaims(rawToken, crypto);\r\n }\r\n\r\n /**\r\n * Extract token by decoding the rawToken\r\n *\r\n * @param encodedToken\r\n */\r\n static extractTokenClaims(encodedToken: string, crypto: ICrypto): TokenClaims {\r\n\r\n const decodedToken: DecodedAuthToken = StringUtils.decodeAuthToken(encodedToken);\r\n\r\n // token will be decoded to get the username\r\n try {\r\n const base64TokenPayload = decodedToken.JWSPayload;\r\n\r\n // base64Decode() should throw an error if there is an issue\r\n const base64Decoded = crypto.base64Decode(base64TokenPayload);\r\n return JSON.parse(base64Decoded) as TokenClaims;\r\n } catch (err) {\r\n throw ClientAuthError.createTokenParsingError(err);\r\n }\r\n }\r\n\r\n /**\r\n * Determine if the token's max_age has transpired\r\n */\r\n static checkMaxAge(authTime: number, maxAge: number): void {\r\n /*\r\n * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\r\n * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access,\r\n * provide a value of 0 for the max_age parameter and the AS will force a fresh login.\r\n */\r\n const fiveMinuteSkew = 300000; // five minutes in milliseconds\r\n if ((maxAge === 0) || ((Date.now() - fiveMinuteSkew) > (authTime + maxAge))) {\r\n throw ClientAuthError.createMaxAgeTranspiredError();\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AccountFilter, CredentialFilter, ValidCredentialType, AppMetadataFilter, AppMetadataCache, TokenKeys } from \"./utils/CacheTypes\";\r\nimport { CacheRecord } from \"./entities/CacheRecord\";\r\nimport { CredentialType, APP_METADATA, THE_FAMILY_ID, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme, Separators } from \"../utils/Constants\";\r\nimport { CredentialEntity } from \"./entities/CredentialEntity\";\r\nimport { ScopeSet } from \"../request/ScopeSet\";\r\nimport { AccountEntity } from \"./entities/AccountEntity\";\r\nimport { AccessTokenEntity } from \"./entities/AccessTokenEntity\";\r\nimport { IdTokenEntity } from \"./entities/IdTokenEntity\";\r\nimport { RefreshTokenEntity } from \"./entities/RefreshTokenEntity\";\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { ICacheManager } from \"./interface/ICacheManager\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { AccountInfo } from \"../account/AccountInfo\";\r\nimport { AppMetadataEntity } from \"./entities/AppMetadataEntity\";\r\nimport { ServerTelemetryEntity } from \"./entities/ServerTelemetryEntity\";\r\nimport { ThrottlingEntity } from \"./entities/ThrottlingEntity\";\r\nimport { AuthToken } from \"../account/AuthToken\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { AuthorityMetadataEntity } from \"./entities/AuthorityMetadataEntity\";\r\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\r\nimport { Logger } from \"../logger/Logger\";\r\nimport { name, version } from \"../packageMetadata\";\r\n\r\n/**\r\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\r\n */\r\nexport abstract class CacheManager implements ICacheManager {\r\n protected clientId: string;\r\n protected cryptoImpl: ICrypto;\r\n // Instance of logger for functions defined in the msal-common layer\r\n private commonLogger: Logger;\r\n\r\n constructor(clientId: string, cryptoImpl: ICrypto, logger: Logger) {\r\n this.clientId = clientId;\r\n this.cryptoImpl = cryptoImpl;\r\n this.commonLogger = logger.clone(name, version);\r\n }\r\n\r\n /**\r\n * fetch the account entity from the platform cache\r\n * @param accountKey\r\n */\r\n abstract getAccount(accountKey: string): AccountEntity | null;\r\n\r\n /**\r\n * set account entity in the platform cache\r\n * @param account\r\n */\r\n abstract setAccount(account: AccountEntity): void;\r\n\r\n /**\r\n * fetch the idToken entity from the platform cache\r\n * @param idTokenKey\r\n */\r\n abstract getIdTokenCredential(idTokenKey: string): IdTokenEntity | null;\r\n\r\n /**\r\n * set idToken entity to the platform cache\r\n * @param idToken\r\n */\r\n abstract setIdTokenCredential(idToken: IdTokenEntity): void;\r\n\r\n /**\r\n * fetch the idToken entity from the platform cache\r\n * @param accessTokenKey\r\n */\r\n abstract getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null;\r\n\r\n /**\r\n * set idToken entity to the platform cache\r\n * @param accessToken\r\n */\r\n abstract setAccessTokenCredential(accessToken: AccessTokenEntity): void;\r\n\r\n /**\r\n * fetch the idToken entity from the platform cache\r\n * @param refreshTokenKey\r\n */\r\n abstract getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null;\r\n\r\n /**\r\n * set idToken entity to the platform cache\r\n * @param refreshToken\r\n */\r\n abstract setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void;\r\n\r\n /**\r\n * fetch appMetadata entity from the platform cache\r\n * @param appMetadataKey\r\n */\r\n abstract getAppMetadata(appMetadataKey: string): AppMetadataEntity | null;\r\n\r\n /**\r\n * set appMetadata entity to the platform cache\r\n * @param appMetadata\r\n */\r\n abstract setAppMetadata(appMetadata: AppMetadataEntity): void;\r\n\r\n /**\r\n * fetch server telemetry entity from the platform cache\r\n * @param serverTelemetryKey\r\n */\r\n abstract getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null;\r\n\r\n /**\r\n * set server telemetry entity to the platform cache\r\n * @param serverTelemetryKey\r\n * @param serverTelemetry\r\n */\r\n abstract setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void;\r\n\r\n /**\r\n * fetch cloud discovery metadata entity from the platform cache\r\n * @param key\r\n */\r\n abstract getAuthorityMetadata(key: string): AuthorityMetadataEntity | null;\r\n\r\n /**\r\n *\r\n */\r\n abstract getAuthorityMetadataKeys(): Array<string>;\r\n\r\n /**\r\n * set cloud discovery metadata entity to the platform cache\r\n * @param key\r\n * @param value\r\n */\r\n abstract setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void;\r\n\r\n /**\r\n * fetch throttling entity from the platform cache\r\n * @param throttlingCacheKey\r\n */\r\n abstract getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null;\r\n\r\n /**\r\n * set throttling entity to the platform cache\r\n * @param throttlingCacheKey\r\n * @param throttlingCache\r\n */\r\n abstract setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void;\r\n\r\n /**\r\n * Function to remove an item from cache given its key.\r\n * @param key\r\n */\r\n abstract removeItem(key: string): void;\r\n\r\n /**\r\n * Function which returns boolean whether cache contains a specific key.\r\n * @param key\r\n */\r\n abstract containsKey(key: string, type?: string): boolean;\r\n\r\n /**\r\n * Function which retrieves all current keys from the cache.\r\n */\r\n abstract getKeys(): string[];\r\n\r\n /**\r\n * Function which retrieves all account keys from the cache\r\n */\r\n abstract getAccountKeys(): string[];\r\n\r\n /**\r\n * Function which retrieves all token keys from the cache\r\n */\r\n abstract getTokenKeys(): TokenKeys;\r\n\r\n /**\r\n * Function which clears cache.\r\n */\r\n abstract clear(): Promise<void>;\r\n\r\n /**\r\n * Function which updates an outdated credential cache key\r\n */\r\n abstract updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string;\r\n\r\n /**\r\n * Returns all accounts in cache\r\n */\r\n getAllAccounts(): AccountInfo[] {\r\n const allAccountKeys = this.getAccountKeys();\r\n if (allAccountKeys.length < 1) {\r\n return [];\r\n }\r\n\r\n const accountEntities: AccountEntity[] = allAccountKeys.reduce((accounts: AccountEntity[], key: string) => {\r\n const entity: AccountEntity | null = this.getAccount(key);\r\n\r\n if (!entity) {\r\n return accounts;\r\n }\r\n accounts.push(entity);\r\n return accounts;\r\n }, []);\r\n\r\n if (accountEntities.length < 1) {\r\n return [];\r\n } else {\r\n const allAccounts = accountEntities.map<AccountInfo>((accountEntity) => {\r\n return this.getAccountInfoFromEntity(accountEntity);\r\n });\r\n return allAccounts;\r\n }\r\n }\r\n\r\n /** \r\n * Gets accountInfo object based on provided filters\r\n */\r\n getAccountInfoFilteredBy(accountFilter: AccountFilter): AccountInfo | null{\r\n const allAccounts = this.getAccountsFilteredBy(accountFilter);\r\n if (allAccounts.length > 0) {\r\n return this.getAccountInfoFromEntity(allAccounts[0]);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n private getAccountInfoFromEntity(accountEntity: AccountEntity): AccountInfo {\r\n const accountInfo = accountEntity.getAccountInfo();\r\n const idToken = this.getIdToken(accountInfo);\r\n if (idToken) {\r\n accountInfo.idToken = idToken.secret;\r\n accountInfo.idTokenClaims = new AuthToken(idToken.secret, this.cryptoImpl).claims;\r\n }\r\n return accountInfo;\r\n }\r\n\r\n /**\r\n * saves a cache record\r\n * @param cacheRecord\r\n */\r\n async saveCacheRecord(cacheRecord: CacheRecord): Promise<void> {\r\n if (!cacheRecord) {\r\n throw ClientAuthError.createNullOrUndefinedCacheRecord();\r\n }\r\n\r\n if (!!cacheRecord.account) {\r\n this.setAccount(cacheRecord.account);\r\n }\r\n\r\n if (!!cacheRecord.idToken) {\r\n this.setIdTokenCredential(cacheRecord.idToken);\r\n }\r\n\r\n if (!!cacheRecord.accessToken) {\r\n await this.saveAccessToken(cacheRecord.accessToken);\r\n }\r\n\r\n if (!!cacheRecord.refreshToken) {\r\n this.setRefreshTokenCredential(cacheRecord.refreshToken);\r\n }\r\n\r\n if (!!cacheRecord.appMetadata) {\r\n this.setAppMetadata(cacheRecord.appMetadata);\r\n }\r\n }\r\n\r\n /**\r\n * saves access token credential\r\n * @param credential\r\n */\r\n private async saveAccessToken(credential: AccessTokenEntity): Promise<void> {\r\n const accessTokenFilter: CredentialFilter = {\r\n clientId: credential.clientId,\r\n credentialType: credential.credentialType,\r\n environment: credential.environment,\r\n homeAccountId: credential.homeAccountId,\r\n realm: credential.realm,\r\n tokenType: credential.tokenType,\r\n requestedClaimsHash: credential.requestedClaimsHash\r\n };\r\n\r\n const tokenKeys = this.getTokenKeys();\r\n const currentScopes = ScopeSet.fromString(credential.target);\r\n\r\n const removedAccessTokens: Array<Promise<void>> = [];\r\n tokenKeys.accessToken.forEach((key) => {\r\n if(!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) {\r\n return;\r\n }\r\n \r\n const tokenEntity = this.getAccessTokenCredential(key);\r\n\r\n if (tokenEntity && this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) {\r\n const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\r\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\r\n removedAccessTokens.push(this.removeAccessToken(key));\r\n }\r\n }\r\n });\r\n await Promise.all(removedAccessTokens);\r\n this.setAccessTokenCredential(credential);\r\n }\r\n\r\n /**\r\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\r\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param homeAccountId\r\n * @param environment\r\n * @param realm\r\n */\r\n getAccountsFilteredBy(accountFilter: AccountFilter): AccountEntity[] {\r\n const allAccountKeys = this.getAccountKeys();\r\n const matchingAccounts: AccountEntity[] = [];\r\n\r\n allAccountKeys.forEach((cacheKey) => {\r\n if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId, accountFilter.realm)) {\r\n // Don't parse value if the key doesn't match the account filters\r\n return;\r\n }\r\n\r\n const entity: AccountEntity | null = this.getAccount(cacheKey);\r\n\r\n if (!entity) {\r\n return;\r\n }\r\n\r\n if (!!accountFilter.homeAccountId && !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) {\r\n return;\r\n }\r\n\r\n if (!!accountFilter.localAccountId && !this.matchLocalAccountId(entity, accountFilter.localAccountId)) {\r\n return;\r\n }\r\n\r\n if (!!accountFilter.username && !this.matchUsername(entity, accountFilter.username)) {\r\n return;\r\n }\r\n\r\n if (!!accountFilter.environment && !this.matchEnvironment(entity, accountFilter.environment)) {\r\n return;\r\n }\r\n\r\n if (!!accountFilter.realm && !this.matchRealm(entity, accountFilter.realm)) {\r\n return;\r\n }\r\n\r\n if (!!accountFilter.nativeAccountId && !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) {\r\n return;\r\n }\r\n\r\n matchingAccounts.push(entity);\r\n });\r\n\r\n return matchingAccounts;\r\n }\r\n\r\n /**\r\n * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided\r\n * @param key \r\n * @param homeAccountId \r\n * @param tenantId \r\n * @returns \r\n */\r\n isAccountKey(key: string, homeAccountId?: string, tenantId?: string): boolean {\r\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) {\r\n // Account cache keys contain 3 items separated by '-' (each item may also contain '-')\r\n return false;\r\n }\r\n\r\n if (homeAccountId && !key.toLowerCase().includes(homeAccountId.toLowerCase())) {\r\n return false;\r\n }\r\n\r\n if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) {\r\n return false;\r\n }\r\n\r\n // Do not check environment as aliasing can cause false negatives\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Returns true if the given key matches our credential key schema.\r\n * @param key \r\n */\r\n isCredentialKey(key: string): boolean {\r\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) {\r\n // Credential cache keys contain 6 items separated by '-' (each item may also contain '-')\r\n return false;\r\n }\r\n\r\n const lowerCaseKey = key.toLowerCase();\r\n // Credential keys must indicate what credential type they represent\r\n if (lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) === -1 &&\r\n lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) === -1 &&\r\n lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) === -1 &&\r\n lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) === -1\r\n ) {\r\n return false;\r\n }\r\n\r\n if (lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) > -1) {\r\n // Refresh tokens must contain the client id or family id\r\n const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`;\r\n const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`;\r\n if (lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 && lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n } else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) {\r\n // Tokens must contain the clientId\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Returns whether or not the given credential entity matches the filter\r\n * @param entity \r\n * @param filter \r\n * @returns \r\n */\r\n credentialMatchesFilter(entity: ValidCredentialType, filter: CredentialFilter): boolean {\r\n if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) {\r\n return false;\r\n }\r\n\r\n if (!!filter.userAssertionHash && !this.matchUserAssertionHash(entity, filter.userAssertionHash)) {\r\n return false;\r\n }\r\n\r\n /*\r\n * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of \"\"\r\n * because we don't want a client_credential request to return a cached token that has a homeAccountId\r\n */\r\n if ((typeof filter.homeAccountId === \"string\") && !this.matchHomeAccountId(entity, filter.homeAccountId)) {\r\n return false;\r\n }\r\n\r\n if (!!filter.environment && !this.matchEnvironment(entity, filter.environment)) {\r\n return false;\r\n }\r\n\r\n if (!!filter.realm && !this.matchRealm(entity, filter.realm)) {\r\n return false;\r\n }\r\n\r\n if (!!filter.credentialType && !this.matchCredentialType(entity, filter.credentialType)) {\r\n return false;\r\n }\r\n\r\n if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) {\r\n return false;\r\n }\r\n\r\n /*\r\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\r\n * Resource specific refresh tokens case will be added when the support is deemed necessary\r\n */\r\n if (!!filter.target && !this.matchTarget(entity, filter.target)) {\r\n return false;\r\n }\r\n\r\n // If request OR cached entity has requested Claims Hash, check if they match\r\n if (filter.requestedClaimsHash || entity.requestedClaimsHash) {\r\n // Don't match if either is undefined or they are different\r\n if (entity.requestedClaimsHash !== filter.requestedClaimsHash) {\r\n return false;\r\n }\r\n }\r\n\r\n // Access Token with Auth Scheme specific matching\r\n if (entity.credentialType === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\r\n if(!!filter.tokenType && !this.matchTokenType(entity, filter.tokenType)) {\r\n return false;\r\n }\r\n\r\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\r\n if (filter.tokenType === AuthenticationScheme.SSH) {\r\n if(filter.keyId && !this.matchKeyId(entity, filter.keyId)) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\r\n * @param filter\r\n */\r\n getAppMetadataFilteredBy(filter: AppMetadataFilter): AppMetadataCache {\r\n return this.getAppMetadataFilteredByInternal(\r\n filter.environment,\r\n filter.clientId,\r\n );\r\n }\r\n\r\n /**\r\n * Support function to help match appMetadata\r\n * @param environment\r\n * @param clientId\r\n */\r\n private getAppMetadataFilteredByInternal(\r\n environment?: string,\r\n clientId?: string\r\n ): AppMetadataCache {\r\n\r\n const allCacheKeys = this.getKeys();\r\n const matchingAppMetadata: AppMetadataCache = {};\r\n\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-appMetadata type cache entities\r\n if (!this.isAppMetadata(cacheKey)) {\r\n return;\r\n }\r\n\r\n // Attempt retrieval\r\n const entity = this.getAppMetadata(cacheKey);\r\n\r\n if (!entity) {\r\n return;\r\n }\r\n\r\n if (!!environment && !this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n\r\n if (!!clientId && !this.matchClientId(entity, clientId)) {\r\n return;\r\n }\r\n\r\n matchingAppMetadata[cacheKey] = entity;\r\n\r\n });\r\n\r\n return matchingAppMetadata;\r\n }\r\n\r\n /**\r\n * retrieve authorityMetadata that contains a matching alias\r\n * @param filter\r\n */\r\n getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null {\r\n const allCacheKeys = this.getAuthorityMetadataKeys();\r\n let matchedEntity = null;\r\n\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-authorityMetadata type cache entities\r\n if (!this.isAuthorityMetadata(cacheKey) || cacheKey.indexOf(this.clientId) === -1) {\r\n return;\r\n }\r\n\r\n // Attempt retrieval\r\n const entity = this.getAuthorityMetadata(cacheKey);\r\n\r\n if (!entity) {\r\n return;\r\n }\r\n\r\n if (entity.aliases.indexOf(host) === -1) {\r\n return;\r\n }\r\n\r\n matchedEntity = entity;\r\n\r\n });\r\n\r\n return matchedEntity;\r\n }\r\n\r\n /**\r\n * Removes all accounts and related tokens from cache.\r\n */\r\n async removeAllAccounts(): Promise<void> {\r\n const allAccountKeys = this.getAccountKeys();\r\n const removedAccounts: Array<Promise<void>> = [];\r\n\r\n allAccountKeys.forEach((cacheKey) => {\r\n removedAccounts.push(this.removeAccount(cacheKey));\r\n });\r\n\r\n await Promise.all(removedAccounts);\r\n }\r\n\r\n /**\r\n * Removes the account and related tokens for a given account key\r\n * @param account\r\n */\r\n async removeAccount(accountKey: string): Promise<void> {\r\n const account = this.getAccount(accountKey);\r\n if (!account) {\r\n throw ClientAuthError.createNoAccountFoundError();\r\n }\r\n await this.removeAccountContext(account);\r\n this.removeItem(accountKey);\r\n }\r\n\r\n /**\r\n * Removes credentials associated with the provided account\r\n * @param account\r\n */\r\n async removeAccountContext(account: AccountEntity): Promise<void> {\r\n const allTokenKeys = this.getTokenKeys();\r\n const accountId = account.generateAccountId();\r\n const removedCredentials: Array<Promise<void>> = [];\r\n\r\n allTokenKeys.idToken.forEach((key) => {\r\n if (key.indexOf(accountId) === 0) {\r\n this.removeIdToken(key);\r\n }\r\n });\r\n\r\n allTokenKeys.accessToken.forEach((key) => {\r\n if (key.indexOf(accountId) === 0) {\r\n removedCredentials.push(this.removeAccessToken(key));\r\n }\r\n });\r\n\r\n allTokenKeys.refreshToken.forEach((key) => {\r\n if (key.indexOf(accountId) === 0) {\r\n this.removeRefreshToken(key);\r\n }\r\n });\r\n\r\n await Promise.all(removedCredentials);\r\n }\r\n\r\n /**\r\n * returns a boolean if the given credential is removed\r\n * @param credential\r\n */\r\n async removeAccessToken(key: string): Promise<void> {\r\n const credential = this.getAccessTokenCredential(key);\r\n if (!credential) {\r\n return;\r\n }\r\n\r\n // Remove Token Binding Key from key store for PoP Tokens Credentials\r\n if (credential.credentialType.toLowerCase() === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) {\r\n if(credential.tokenType === AuthenticationScheme.POP) {\r\n const accessTokenWithAuthSchemeEntity = credential as AccessTokenEntity;\r\n const kid = accessTokenWithAuthSchemeEntity.keyId;\r\n\r\n if (kid) {\r\n try {\r\n await this.cryptoImpl.removeTokenBindingKey(kid);\r\n } catch (error) {\r\n throw ClientAuthError.createBindingKeyNotRemovedError();\r\n }\r\n }\r\n }\r\n }\r\n\r\n return this.removeItem(key);\r\n }\r\n\r\n /**\r\n * Removes all app metadata objects from cache.\r\n */\r\n removeAppMetadata(): boolean {\r\n const allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach((cacheKey) => {\r\n if (this.isAppMetadata(cacheKey)) {\r\n this.removeItem(cacheKey);\r\n }\r\n });\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Retrieve the cached credentials into a cacherecord\r\n * @param account\r\n * @param clientId\r\n * @param scopes\r\n * @param environment\r\n * @param authScheme\r\n */\r\n readCacheRecord(account: AccountInfo, request: BaseAuthRequest, environment: string): CacheRecord {\r\n const tokenKeys = this.getTokenKeys();\r\n const cachedAccount = this.readAccountFromCache(account);\r\n const cachedIdToken = this.getIdToken(account, tokenKeys);\r\n const cachedAccessToken = this.getAccessToken(account, request, tokenKeys);\r\n const cachedRefreshToken = this.getRefreshToken(account, false, tokenKeys);\r\n const cachedAppMetadata = this.readAppMetadataFromCache(environment);\r\n\r\n if (cachedAccount && cachedIdToken) {\r\n cachedAccount.idTokenClaims = new AuthToken(cachedIdToken.secret, this.cryptoImpl).claims;\r\n }\r\n\r\n return {\r\n account: cachedAccount,\r\n idToken: cachedIdToken,\r\n accessToken: cachedAccessToken,\r\n refreshToken: cachedRefreshToken,\r\n appMetadata: cachedAppMetadata,\r\n };\r\n }\r\n\r\n /**\r\n * Retrieve AccountEntity from cache\r\n * @param account\r\n */\r\n readAccountFromCache(account: AccountInfo): AccountEntity | null {\r\n const accountKey: string = AccountEntity.generateAccountCacheKey(account);\r\n return this.getAccount(accountKey);\r\n }\r\n\r\n /**\r\n * Retrieve IdTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param inputRealm\r\n */\r\n getIdToken(account: AccountInfo, tokenKeys?: TokenKeys): IdTokenEntity | null {\r\n this.commonLogger.trace(\"CacheManager - getIdToken called\");\r\n const idTokenFilter: CredentialFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: this.clientId,\r\n realm: account.tenantId,\r\n };\r\n\r\n const idTokens: IdTokenEntity[] = this.getIdTokensByFilter(idTokenFilter, tokenKeys);\r\n const numIdTokens = idTokens.length;\r\n\r\n if (numIdTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - No token found\");\r\n return null;\r\n } else if (numIdTokens > 1) {\r\n this.commonLogger.info(\r\n \"CacheManager:getIdToken - Multiple id tokens found, clearing them\"\r\n );\r\n idTokens.forEach((idToken) => {\r\n this.removeIdToken(idToken.generateCredentialKey());\r\n });\r\n return null;\r\n }\r\n\r\n this.commonLogger.info(\"CacheManager:getIdToken - Returning id token\");\r\n return idTokens[0];\r\n }\r\n\r\n /**\r\n * Gets all idTokens matching the given filter\r\n * @param filter \r\n * @returns \r\n */\r\n getIdTokensByFilter(filter: CredentialFilter, tokenKeys?: TokenKeys): IdTokenEntity[] {\r\n const idTokenKeys = tokenKeys && tokenKeys.idToken || this.getTokenKeys().idToken;\r\n\r\n const idTokens: IdTokenEntity[] = [];\r\n idTokenKeys.forEach((key) => {\r\n if (!this.idTokenKeyMatchesFilter(key, {clientId: this.clientId, ...filter})) {\r\n return;\r\n }\r\n\r\n const idToken = this.getIdTokenCredential(key);\r\n if (idToken && this.credentialMatchesFilter(idToken, filter)) {\r\n idTokens.push(idToken);\r\n }\r\n });\r\n\r\n return idTokens;\r\n }\r\n\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key \r\n * @param filter\r\n * @returns \r\n */\r\n idTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter): boolean {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Removes idToken from the cache\r\n * @param key \r\n */\r\n removeIdToken(key: string): void {\r\n this.removeItem(key);\r\n }\r\n\r\n /**\r\n * Removes refresh token from the cache\r\n * @param key \r\n */\r\n removeRefreshToken(key: string): void {\r\n this.removeItem(key);\r\n }\r\n\r\n /**\r\n * Retrieve AccessTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param scopes\r\n * @param authScheme\r\n */\r\n getAccessToken(account: AccountInfo, request: BaseAuthRequest, tokenKeys?: TokenKeys): AccessTokenEntity | null {\r\n this.commonLogger.trace(\"CacheManager - getAccessToken called\");\r\n const scopes = ScopeSet.createSearchScopes(request.scopes);\r\n const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\r\n /*\r\n * Distinguish between Bearer and PoP/SSH token cache types\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n const credentialType = (authScheme && authScheme.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME : CredentialType.ACCESS_TOKEN;\r\n\r\n const accessTokenFilter: CredentialFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: credentialType,\r\n clientId: this.clientId,\r\n realm: account.tenantId,\r\n target: scopes,\r\n tokenType: authScheme,\r\n keyId: request.sshKid,\r\n requestedClaimsHash: request.requestedClaimsHash,\r\n };\r\n\r\n const accessTokenKeys = tokenKeys && tokenKeys.accessToken || this.getTokenKeys().accessToken;\r\n const accessTokens: AccessTokenEntity[] = [];\r\n\r\n accessTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) {\r\n const accessToken = this.getAccessTokenCredential(key);\r\n\r\n // Validate value\r\n if (accessToken && this.credentialMatchesFilter(accessToken, accessTokenFilter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n }\r\n });\r\n\r\n const numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - No token found\");\r\n return null;\r\n } else if (numAccessTokens > 1) {\r\n this.commonLogger.info(\r\n \"CacheManager:getAccessToken - Multiple access tokens found, clearing them\"\r\n );\r\n accessTokens.forEach((accessToken) => {\r\n this.removeAccessToken(accessToken.generateCredentialKey());\r\n });\r\n return null;\r\n }\r\n\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Returning access token\");\r\n return accessTokens[0];\r\n }\r\n\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key \r\n * @param filter \r\n * @param keyMustContainAllScopes \r\n * @returns \r\n */\r\n accessTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter, keyMustContainAllScopes: boolean): boolean {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n if (filter.requestedClaimsHash && key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n if (filter.target) {\r\n const scopes = filter.target.asArray();\r\n for (let i = 0; i < scopes.length; i++) {\r\n if (keyMustContainAllScopes && !key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache lookup a missing scope would be a cache miss\r\n return false;\r\n } else if (!keyMustContainAllScopes && key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache write, any token with a subset of requested scopes should be replaced\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets all access tokens matching the filter\r\n * @param filter \r\n * @returns \r\n */\r\n getAccessTokensByFilter(filter: CredentialFilter): AccessTokenEntity[] {\r\n const tokenKeys = this.getTokenKeys();\r\n\r\n const accessTokens: AccessTokenEntity[] = [];\r\n tokenKeys.accessToken.forEach((key) => {\r\n if (!this.accessTokenKeyMatchesFilter(key, filter, true)) {\r\n return;\r\n }\r\n\r\n const accessToken = this.getAccessTokenCredential(key);\r\n if (accessToken && this.credentialMatchesFilter(accessToken, filter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n });\r\n\r\n return accessTokens;\r\n }\r\n\r\n /**\r\n * Helper to retrieve the appropriate refresh token from cache\r\n * @param clientId\r\n * @param account\r\n * @param familyRT\r\n */\r\n getRefreshToken(account: AccountInfo, familyRT: boolean, tokenKeys?: TokenKeys): RefreshTokenEntity | null {\r\n this.commonLogger.trace(\"CacheManager - getRefreshToken called\");\r\n const id = familyRT ? THE_FAMILY_ID : undefined;\r\n const refreshTokenFilter: CredentialFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n clientId: this.clientId,\r\n familyId: id,\r\n };\r\n\r\n const refreshTokenKeys = tokenKeys && tokenKeys.refreshToken || this.getTokenKeys().refreshToken;\r\n const refreshTokens: RefreshTokenEntity[] = [];\r\n\r\n refreshTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) {\r\n const refreshToken = this.getRefreshTokenCredential(key);\r\n // Validate value\r\n if (refreshToken && this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) {\r\n refreshTokens.push(refreshToken);\r\n }\r\n }\r\n });\r\n\r\n const numRefreshTokens = refreshTokens.length;\r\n if (numRefreshTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - No refresh token found.\");\r\n return null;\r\n }\r\n // address the else case after remove functions address environment aliases\r\n\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - returning refresh token\");\r\n return refreshTokens[0] as RefreshTokenEntity;\r\n }\r\n\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n */\r\n refreshTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter): boolean {\r\n const key = inputKey.toLowerCase();\r\n if (filter.familyId && key.indexOf(filter.familyId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n // If familyId is used, clientId is not in the key\r\n if (!filter.familyId && filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Retrieve AppMetadataEntity from cache\r\n */\r\n readAppMetadataFromCache(environment: string): AppMetadataEntity | null {\r\n const appMetadataFilter: AppMetadataFilter = {\r\n environment,\r\n clientId: this.clientId,\r\n };\r\n\r\n const appMetadata: AppMetadataCache = this.getAppMetadataFilteredBy(appMetadataFilter);\r\n const appMetadataEntries: AppMetadataEntity[] = Object.keys(appMetadata).map((key) => appMetadata[key]);\r\n\r\n const numAppMetadata = appMetadataEntries.length;\r\n if (numAppMetadata < 1) {\r\n return null;\r\n } else if (numAppMetadata > 1) {\r\n throw ClientAuthError.createMultipleMatchingAppMetadataInCacheError();\r\n }\r\n\r\n return appMetadataEntries[0] as AppMetadataEntity;\r\n }\r\n\r\n /**\r\n * Return the family_id value associated with FOCI\r\n * @param environment\r\n * @param clientId\r\n */\r\n isAppMetadataFOCI(environment: string): boolean {\r\n const appMetadata = this.readAppMetadataFromCache(environment);\r\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\r\n }\r\n\r\n /**\r\n * helper to match account ids\r\n * @param value\r\n * @param homeAccountId\r\n */\r\n private matchHomeAccountId(entity: AccountEntity | CredentialEntity, homeAccountId: string): boolean {\r\n return !!((typeof entity.homeAccountId === \"string\") && (homeAccountId === entity.homeAccountId));\r\n }\r\n\r\n /**\r\n * helper to match account ids\r\n * @param entity \r\n * @param localAccountId \r\n * @returns \r\n */\r\n private matchLocalAccountId(entity: AccountEntity, localAccountId: string): boolean {\r\n return !!((typeof entity.localAccountId === \"string\") && (localAccountId === entity.localAccountId));\r\n }\r\n\r\n /**\r\n * helper to match usernames\r\n * @param entity \r\n * @param username \r\n * @returns \r\n */\r\n private matchUsername(entity: AccountEntity, username: string): boolean {\r\n return !!((typeof entity.username === \"string\") && (username.toLowerCase() === entity.username.toLowerCase()));\r\n }\r\n\r\n /**\r\n * helper to match assertion\r\n * @param value\r\n * @param oboAssertion\r\n */\r\n private matchUserAssertionHash(entity: CredentialEntity, userAssertionHash: string): boolean {\r\n return !!(entity.userAssertionHash && userAssertionHash === entity.userAssertionHash);\r\n }\r\n\r\n /**\r\n * helper to match environment\r\n * @param value\r\n * @param environment\r\n */\r\n private matchEnvironment(entity: AccountEntity | CredentialEntity | AppMetadataEntity, environment: string): boolean {\r\n const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\r\n if (cloudMetadata && cloudMetadata.aliases.indexOf(entity.environment) > -1) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * helper to match credential type\r\n * @param entity\r\n * @param credentialType\r\n */\r\n private matchCredentialType(entity: CredentialEntity, credentialType: string): boolean {\r\n return (entity.credentialType && credentialType.toLowerCase() === entity.credentialType.toLowerCase());\r\n }\r\n\r\n /**\r\n * helper to match client ids\r\n * @param entity\r\n * @param clientId\r\n */\r\n private matchClientId(entity: CredentialEntity | AppMetadataEntity, clientId: string): boolean {\r\n return !!(entity.clientId && clientId === entity.clientId);\r\n }\r\n\r\n /**\r\n * helper to match family ids\r\n * @param entity\r\n * @param familyId\r\n */\r\n private matchFamilyId(entity: CredentialEntity | AppMetadataEntity, familyId: string): boolean {\r\n return !!(entity.familyId && familyId === entity.familyId);\r\n }\r\n\r\n /**\r\n * helper to match realm\r\n * @param entity\r\n * @param realm\r\n */\r\n private matchRealm(entity: AccountEntity | CredentialEntity, realm: string): boolean {\r\n return !!(entity.realm && realm === entity.realm);\r\n }\r\n\r\n /**\r\n * helper to match nativeAccountId\r\n * @param entity\r\n * @param nativeAccountId\r\n * @returns boolean indicating the match result\r\n */\r\n private matchNativeAccountId(entity: AccountEntity, nativeAccountId: string): boolean {\r\n return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId);\r\n }\r\n\r\n /**\r\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\r\n * @param entity\r\n * @param target\r\n */\r\n private matchTarget(entity: CredentialEntity, target: ScopeSet): boolean {\r\n const isNotAccessTokenCredential = (entity.credentialType !== CredentialType.ACCESS_TOKEN && entity.credentialType !== CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME);\r\n\r\n if ( isNotAccessTokenCredential || !entity.target) {\r\n return false;\r\n }\r\n\r\n const entityScopeSet: ScopeSet = ScopeSet.fromString(entity.target);\r\n\r\n return entityScopeSet.containsScopeSet(target);\r\n }\r\n\r\n /**\r\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n private matchTokenType(entity: CredentialEntity, tokenType: AuthenticationScheme): boolean {\r\n return !!(entity.tokenType && entity.tokenType === tokenType);\r\n }\r\n\r\n /**\r\n * Returns true if the credential's keyId matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n private matchKeyId(entity: CredentialEntity, keyId: string): boolean {\r\n return !!(entity.keyId && entity.keyId === keyId);\r\n }\r\n\r\n /**\r\n * returns if a given cache entity is of the type appmetadata\r\n * @param key\r\n */\r\n private isAppMetadata(key: string): boolean {\r\n return key.indexOf(APP_METADATA) !== -1;\r\n }\r\n\r\n /**\r\n * returns if a given cache entity is of the type authoritymetadata\r\n * @param key\r\n */\r\n protected isAuthorityMetadata(key: string): boolean {\r\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\r\n }\r\n\r\n /**\r\n * returns cache key used for cloud instance metadata\r\n */\r\n generateAuthorityMetadataCacheKey(authority: string): string {\r\n return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\r\n }\r\n\r\n /**\r\n * Helper to convert serialized data to object\r\n * @param obj\r\n * @param json\r\n */\r\n static toObject<T>(obj: T, json: object): T {\r\n for (const propertyName in json) {\r\n obj[propertyName] = json[propertyName];\r\n }\r\n return obj;\r\n }\r\n}\r\n\r\nexport class DefaultStorageClass extends CacheManager {\r\n setAccount(): void {\r\n const notImplErr = \"Storage interface - setAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAccount(): AccountEntity {\r\n const notImplErr = \"Storage interface - getAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setIdTokenCredential(): void {\r\n const notImplErr = \"Storage interface - setIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getIdTokenCredential(): IdTokenEntity {\r\n const notImplErr = \"Storage interface - getIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setAccessTokenCredential(): void {\r\n const notImplErr = \"Storage interface - setAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAccessTokenCredential(): AccessTokenEntity {\r\n const notImplErr = \"Storage interface - getAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setRefreshTokenCredential(): void {\r\n const notImplErr = \"Storage interface - setRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getRefreshTokenCredential(): RefreshTokenEntity {\r\n const notImplErr = \"Storage interface - getRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setAppMetadata(): void {\r\n const notImplErr = \"Storage interface - setAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAppMetadata(): AppMetadataEntity {\r\n const notImplErr = \"Storage interface - getAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setServerTelemetry(): void {\r\n const notImplErr = \"Storage interface - setServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getServerTelemetry(): ServerTelemetryEntity {\r\n const notImplErr = \"Storage interface - getServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setAuthorityMetadata(): void {\r\n const notImplErr = \"Storage interface - setAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAuthorityMetadata(): AuthorityMetadataEntity | null {\r\n const notImplErr = \"Storage interface - getAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAuthorityMetadataKeys(): Array<string> {\r\n const notImplErr = \"Storage interface - getAuthorityMetadataKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setThrottlingCache(): void {\r\n const notImplErr = \"Storage interface - setThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getThrottlingCache(): ThrottlingEntity {\r\n const notImplErr = \"Storage interface - getThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n removeItem(): boolean {\r\n const notImplErr = \"Storage interface - removeItem() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n containsKey(): boolean {\r\n const notImplErr = \"Storage interface - containsKey() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getKeys(): string[] {\r\n const notImplErr = \"Storage interface - getKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAccountKeys(): string[] {\r\n const notImplErr = \"Storage interface - getAccountKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getTokenKeys(): TokenKeys {\r\n const notImplErr = \"Storage interface - getTokenKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n async clear(): Promise<void> {\r\n const notImplErr = \"Storage interface - clear() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n updateCredentialCacheKey(): string {\r\n const notImplErr = \"Storage interface - updateCredentialCacheKey() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Utility class which exposes functions for managing date and time operations.\r\n */\r\nexport class TimeUtils {\r\n\r\n /**\r\n * return the current time in Unix time (seconds).\r\n */\r\n static nowSeconds(): number {\r\n // Date.getTime() returns in milliseconds.\r\n return Math.round(new Date().getTime() / 1000.0);\r\n }\r\n \r\n /**\r\n * check if a token is expired based on given UTC time in seconds.\r\n * @param expiresOn\r\n */\r\n static isTokenExpired(expiresOn: string, offset: number): boolean {\r\n // check for access token expiry\r\n const expirationSec = Number(expiresOn) || 0;\r\n const offsetCurrentTimeSec = TimeUtils.nowSeconds() + offset;\r\n\r\n // If current time + offset is greater than token expiration time, then token is expired.\r\n return (offsetCurrentTimeSec > expirationSec);\r\n }\r\n\r\n /**\r\n * If the current time is earlier than the time that a token was cached at, we must discard the token\r\n * i.e. The system clock was turned back after acquiring the cached token\r\n * @param cachedAt \r\n * @param offset \r\n */\r\n static wasClockTurnedBack(cachedAt: string): boolean {\r\n const cachedAtSec = Number(cachedAt);\r\n\r\n return cachedAtSec > TimeUtils.nowSeconds();\r\n }\r\n\r\n /**\r\n * Waits for t number of milliseconds\r\n * @param t number\r\n * @param value T\r\n */\r\n static delay<T>(t: number, value?: T): Promise<T | void> {\r\n return new Promise((resolve) => setTimeout(() => resolve(value), t));\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CredentialEntity } from \"./CredentialEntity\";\r\nimport { CredentialType, AuthenticationScheme } from \"../../utils/Constants\";\r\nimport { TimeUtils } from \"../../utils/TimeUtils\";\r\nimport { StringUtils } from \"../../utils/StringUtils\";\r\nimport { ICrypto } from \"../../crypto/ICrypto\";\r\nimport { TokenClaims } from \"../../account/TokenClaims\";\r\nimport { AuthToken } from \"../../account/AuthToken\";\r\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\r\n\r\n/**\r\n * ACCESS_TOKEN Credential Type\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-accesstoken-clientId-contoso.com-user.read\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * cachedAt: Absolute device time when entry was created in the cache.\r\n * expiresOn: Token expiry time, calculated based on current UTC time in seconds. Represented as a string.\r\n * extendedExpiresOn: Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds.\r\n * keyId: used for POP and SSH tokenTypes\r\n * tokenType: Type of the token issued. Usually \"Bearer\"\r\n * }\r\n */\r\nexport class AccessTokenEntity extends CredentialEntity {\r\n realm: string;\r\n target: string;\r\n cachedAt: string;\r\n expiresOn: string;\r\n extendedExpiresOn?: string;\r\n refreshOn?: string;\r\n keyId?: string; // for POP and SSH tokenTypes\r\n tokenType?: AuthenticationScheme;\r\n requestedClaims?: string;\r\n requestedClaimsHash?: string;\r\n\r\n /**\r\n * Create AccessTokenEntity\r\n * @param homeAccountId\r\n * @param environment\r\n * @param accessToken\r\n * @param clientId\r\n * @param tenantId\r\n * @param scopes\r\n * @param expiresOn\r\n * @param extExpiresOn\r\n */\r\n static createAccessTokenEntity(\r\n homeAccountId: string,\r\n environment: string,\r\n accessToken: string,\r\n clientId: string,\r\n tenantId: string,\r\n scopes: string,\r\n expiresOn: number,\r\n extExpiresOn: number,\r\n cryptoUtils: ICrypto,\r\n refreshOn?: number,\r\n tokenType?: AuthenticationScheme,\r\n userAssertionHash?:string,\r\n keyId?: string,\r\n requestedClaims?: string,\r\n requestedClaimsHash?: string\r\n ): AccessTokenEntity {\r\n const atEntity: AccessTokenEntity = new AccessTokenEntity();\r\n\r\n atEntity.homeAccountId = homeAccountId;\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN;\r\n atEntity.secret = accessToken;\r\n\r\n const currentTime = TimeUtils.nowSeconds();\r\n atEntity.cachedAt = currentTime.toString();\r\n\r\n /*\r\n * Token expiry time.\r\n * This value should be  calculated based on the current UTC time measured locally and the value  expires_in Represented as a string in JSON.\r\n */\r\n atEntity.expiresOn = expiresOn.toString();\r\n atEntity.extendedExpiresOn = extExpiresOn.toString();\r\n if (refreshOn) {\r\n atEntity.refreshOn = refreshOn.toString();\r\n }\r\n\r\n atEntity.environment = environment;\r\n atEntity.clientId = clientId;\r\n atEntity.realm = tenantId;\r\n atEntity.target = scopes;\r\n atEntity.userAssertionHash = userAssertionHash;\r\n\r\n atEntity.tokenType = StringUtils.isEmpty(tokenType) ? AuthenticationScheme.BEARER : tokenType;\r\n\r\n if (requestedClaims) {\r\n atEntity.requestedClaims = requestedClaims;\r\n atEntity.requestedClaimsHash = requestedClaimsHash;\r\n }\r\n\r\n /*\r\n * Create Access Token With Auth Scheme instead of regular access token\r\n * Cast to lower to handle \"bearer\" from ADFS\r\n */\r\n if (atEntity.tokenType?.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) {\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n switch (atEntity.tokenType) {\r\n case AuthenticationScheme.POP:\r\n // Make sure keyId is present and add it to credential\r\n const tokenClaims: TokenClaims | null = AuthToken.extractTokenClaims(accessToken, cryptoUtils);\r\n if (!tokenClaims?.cnf?.kid) {\r\n throw ClientAuthError.createTokenClaimsRequiredError();\r\n }\r\n atEntity.keyId = tokenClaims.cnf.kid;\r\n break;\r\n case AuthenticationScheme.SSH:\r\n atEntity.keyId = keyId;\r\n }\r\n }\r\n\r\n return atEntity;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAccessTokenEntity(entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity.hasOwnProperty(\"target\") &&\r\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN || entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME)\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CredentialEntity } from \"./CredentialEntity\";\r\nimport { CredentialType } from \"../../utils/Constants\";\r\n\r\n/**\r\n * REFRESH_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-refreshtoken-clientId--\r\n *\r\n * Value:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * }\r\n */\r\nexport class RefreshTokenEntity extends CredentialEntity {\r\n familyId?: string;\r\n\r\n /**\r\n * Create RefreshTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n static createRefreshTokenEntity(\r\n homeAccountId: string,\r\n environment: string,\r\n refreshToken: string,\r\n clientId: string,\r\n familyId?: string,\r\n userAssertionHash?: string\r\n ): RefreshTokenEntity {\r\n const rtEntity = new RefreshTokenEntity();\r\n\r\n rtEntity.clientId = clientId;\r\n rtEntity.credentialType = CredentialType.REFRESH_TOKEN;\r\n rtEntity.environment = environment;\r\n rtEntity.homeAccountId = homeAccountId;\r\n rtEntity.secret = refreshToken;\r\n rtEntity.userAssertionHash = userAssertionHash;\r\n\r\n if (familyId)\r\n rtEntity.familyId = familyId;\r\n\r\n return rtEntity;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isRefreshTokenEntity(entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { APP_METADATA, Separators } from \"../../utils/Constants\";\r\n\r\n/**\r\n * APP_METADATA Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: appmetadata-<environment>-<client_id>\r\n *\r\n * Value:\r\n * {\r\n * clientId: client ID of the application\r\n * environment: entity that issued the token, represented as a full host\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * }\r\n */\r\nexport class AppMetadataEntity {\r\n clientId: string;\r\n environment: string;\r\n familyId?: string;\r\n\r\n /**\r\n * Generate AppMetadata Cache Key as per the schema: appmetadata-<environment>-<client_id>\r\n */\r\n generateAppMetadataKey(): string {\r\n return AppMetadataEntity.generateAppMetadataCacheKey(this.environment, this.clientId);\r\n }\r\n\r\n /**\r\n * Generate AppMetadata Cache Key\r\n */\r\n static generateAppMetadataCacheKey(environment: string, clientId: string): string {\r\n const appMetaDataKeyArray: Array<string> = [\r\n APP_METADATA,\r\n environment,\r\n clientId,\r\n ];\r\n return appMetaDataKeyArray.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Creates AppMetadataEntity\r\n * @param clientId\r\n * @param environment\r\n * @param familyId\r\n */\r\n static createAppMetadataEntity(clientId: string, environment: string, familyId?: string): AppMetadataEntity {\r\n const appMetadata = new AppMetadataEntity();\r\n\r\n appMetadata.clientId = clientId;\r\n appMetadata.environment = environment;\r\n if (familyId) {\r\n appMetadata.familyId = familyId;\r\n }\r\n\r\n return appMetadata;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAppMetadataEntity(key: string, entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n key.indexOf(APP_METADATA) === 0 &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"environment\")\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { SERVER_TELEM_CONSTANTS } from \"../../utils/Constants\";\r\n\r\nexport class ServerTelemetryEntity {\r\n failedRequests: Array<string|number>;\r\n errors: string[];\r\n cacheHits: number;\r\n\r\n constructor() {\r\n this.failedRequests = [];\r\n this.errors = [];\r\n this.cacheHits = 0;\r\n }\r\n\r\n /**\r\n * validates if a given cache entry is \"Telemetry\", parses <key,value>\r\n * @param key\r\n * @param entity\r\n */\r\n static isServerTelemetryEntity(key: string, entity?: object): boolean {\r\n\r\n const validateKey: boolean = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\r\n let validateEntity: boolean = true;\r\n\r\n if (entity) {\r\n validateEntity =\r\n entity.hasOwnProperty(\"failedRequests\") &&\r\n entity.hasOwnProperty(\"errors\") &&\r\n entity.hasOwnProperty(\"cacheHits\");\r\n }\r\n\r\n return validateKey && validateEntity;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CloudDiscoveryMetadata } from \"../../authority/CloudDiscoveryMetadata\";\r\nimport { OpenIdConfigResponse } from \"../../authority/OpenIdConfigResponse\";\r\nimport { AUTHORITY_METADATA_CONSTANTS } from \"../../utils/Constants\";\r\nimport { TimeUtils } from \"../../utils/TimeUtils\";\r\n\r\nexport class AuthorityMetadataEntity {\r\n aliases: Array<string>;\r\n preferred_cache: string;\r\n preferred_network: string;\r\n canonical_authority: string;\r\n authorization_endpoint: string;\r\n token_endpoint: string;\r\n end_session_endpoint?: string;\r\n issuer: string;\r\n aliasesFromNetwork: boolean;\r\n endpointsFromNetwork: boolean;\r\n expiresAt: number;\r\n jwks_uri: string;\r\n\r\n constructor() {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n }\r\n\r\n /**\r\n * Update the entity with new aliases, preferred_cache and preferred_network values\r\n * @param metadata \r\n * @param fromNetwork \r\n */\r\n updateCloudDiscoveryMetadata(metadata: CloudDiscoveryMetadata, fromNetwork: boolean): void {\r\n this.aliases = metadata.aliases;\r\n this.preferred_cache = metadata.preferred_cache;\r\n this.preferred_network = metadata.preferred_network;\r\n this.aliasesFromNetwork = fromNetwork;\r\n }\r\n\r\n /**\r\n * Update the entity with new endpoints\r\n * @param metadata \r\n * @param fromNetwork \r\n */\r\n updateEndpointMetadata(metadata: OpenIdConfigResponse, fromNetwork: boolean): void {\r\n this.authorization_endpoint = metadata.authorization_endpoint;\r\n this.token_endpoint = metadata.token_endpoint;\r\n this.end_session_endpoint = metadata.end_session_endpoint;\r\n this.issuer = metadata.issuer;\r\n this.endpointsFromNetwork = fromNetwork;\r\n this.jwks_uri = metadata.jwks_uri;\r\n }\r\n\r\n /**\r\n * Save the authority that was used to create this cache entry\r\n * @param authority \r\n */\r\n updateCanonicalAuthority(authority: string): void {\r\n this.canonical_authority = authority;\r\n }\r\n\r\n /**\r\n * Reset the exiresAt value\r\n */\r\n resetExpiresAt(): void {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n }\r\n\r\n /**\r\n * Returns whether or not the data needs to be refreshed\r\n */\r\n isExpired(): boolean {\r\n return this.expiresAt <= TimeUtils.nowSeconds();\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAuthorityMetadataEntity(key: string, entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\r\n entity.hasOwnProperty(\"aliases\") &&\r\n entity.hasOwnProperty(\"preferred_cache\") &&\r\n entity.hasOwnProperty(\"preferred_network\") &&\r\n entity.hasOwnProperty(\"canonical_authority\") &&\r\n entity.hasOwnProperty(\"authorization_endpoint\") &&\r\n entity.hasOwnProperty(\"token_endpoint\") &&\r\n entity.hasOwnProperty(\"issuer\") &&\r\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\r\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\r\n entity.hasOwnProperty(\"expiresAt\") &&\r\n entity.hasOwnProperty(\"jwks_uri\")\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ThrottlingConstants } from \"../../utils/Constants\";\r\n\r\nexport class ThrottlingEntity {\r\n // Unix-time value representing the expiration of the throttle\r\n throttleTime: number;\r\n // Information provided by the server\r\n error?: string;\r\n errorCodes?: Array<string>;\r\n errorMessage?: string;\r\n subError?: string;\r\n\r\n /**\r\n * validates if a given cache entry is \"Throttling\", parses <key,value>\r\n * @param key\r\n * @param entity\r\n */\r\n static isThrottlingEntity(key: string, entity?: object): boolean {\r\n \r\n let validateKey: boolean = false;\r\n if (key) {\r\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\r\n }\r\n \r\n let validateEntity: boolean = true;\r\n if (entity) {\r\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\r\n }\r\n\r\n return validateKey && validateEntity;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StringUtils } from \"./StringUtils\";\r\nimport { Constants } from \"./Constants\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\n\r\n/**\r\n * Type which defines the object that is stringified, encoded and sent in the state value.\r\n * Contains the following:\r\n * - id - unique identifier for this request\r\n * - ts - timestamp for the time the request was made. Used to ensure that token expiration is not calculated incorrectly.\r\n * - platformState - string value sent from the platform.\r\n */\r\nexport type LibraryStateObject = {\r\n id: string,\r\n meta?: Record<string, string>\r\n};\r\n\r\n/**\r\n * Type which defines the stringified and encoded object sent to the service in the authorize request.\r\n */\r\nexport type RequestStateObject = {\r\n userRequestState: string,\r\n libraryState: LibraryStateObject\r\n};\r\n\r\n/**\r\n * Class which provides helpers for OAuth 2.0 protocol specific values\r\n */\r\nexport class ProtocolUtils {\r\n\r\n /**\r\n * Appends user state with random guid, or returns random guid.\r\n * @param userState \r\n * @param randomGuid \r\n */\r\n static setRequestState(cryptoObj: ICrypto, userState?: string, meta?: Record<string, string>): string {\r\n const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\r\n return !StringUtils.isEmpty(userState) ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}` : libraryState;\r\n }\r\n\r\n /**\r\n * Generates the state value used by the common library.\r\n * @param randomGuid \r\n * @param cryptoObj \r\n */\r\n static generateLibraryState(cryptoObj: ICrypto, meta?: Record<string, string>): string {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"generateLibraryState\");\r\n }\r\n\r\n // Create a state object containing a unique id and the timestamp of the request creation\r\n const stateObj: LibraryStateObject = {\r\n id: cryptoObj.createNewGuid()\r\n };\r\n\r\n if (meta) {\r\n stateObj.meta = meta;\r\n }\r\n\r\n const stateString = JSON.stringify(stateObj);\r\n\r\n return cryptoObj.base64Encode(stateString);\r\n }\r\n\r\n /**\r\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\r\n * @param state \r\n * @param cryptoObj \r\n */\r\n static parseRequestState(cryptoObj: ICrypto, state: string): RequestStateObject {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"parseRequestState\");\r\n }\r\n\r\n if (StringUtils.isEmpty(state)) {\r\n throw ClientAuthError.createInvalidStateError(state, \"Null, undefined or empty state\");\r\n }\r\n\r\n try {\r\n // Split the state between library state and user passed state and decode them separately\r\n const splitState = state.split(Constants.RESOURCE_DELIM);\r\n const libraryState = splitState[0];\r\n const userState = splitState.length > 1 ? splitState.slice(1).join(Constants.RESOURCE_DELIM) : Constants.EMPTY_STRING;\r\n const libraryStateString = cryptoObj.base64Decode(libraryState);\r\n const libraryStateObj = JSON.parse(libraryStateString) as LibraryStateObject;\r\n return {\r\n userRequestState: !StringUtils.isEmpty(userState) ? userState : Constants.EMPTY_STRING,\r\n libraryState: libraryStateObj\r\n };\r\n } catch(e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Protocol modes supported by MSAL.\r\n */\r\nexport enum ProtocolMode {\r\n AAD = \"AAD\",\r\n OIDC = \"OIDC\"\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ProtocolMode } from \"./ProtocolMode\";\r\nimport { AzureRegionConfiguration } from \"./AzureRegionConfiguration\";\r\n\r\nexport type AuthorityOptions = {\r\n protocolMode: ProtocolMode;\r\n knownAuthorities: Array<string>;\r\n cloudDiscoveryMetadata: string;\r\n authorityMetadata: string;\r\n skipAuthorityMetadataCache?: boolean;\r\n azureRegionConfiguration?: AzureRegionConfiguration;\r\n};\r\n\r\nexport enum AzureCloudInstance {\r\n // AzureCloudInstance is not specified.\r\n None,\r\n\r\n // Microsoft Azure public cloud\r\n AzurePublic = \"https://login.microsoftonline.com\",\r\n\r\n // Microsoft PPE\r\n AzurePpe = \"https://login.windows-ppe.net\",\r\n\r\n // Microsoft Chinese national cloud\r\n AzureChina = \"https://login.chinacloudapi.cn\",\r\n\r\n // Microsoft German national cloud (\"Black Forest\")\r\n AzureGermany = \"https://login.microsoftonline.de\",\r\n\r\n // US Government cloud\r\n AzureUsGovernment = \"https://login.microsoftonline.us\",\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\r\nimport { BrowserCacheLocation } from \"../utils/BrowserConstants\";\r\nimport { IWindowStorage } from \"./IWindowStorage\";\r\n\r\nexport class BrowserStorage implements IWindowStorage<string> {\r\n\r\n private windowStorage: Storage;\r\n\r\n constructor(cacheLocation: string) {\r\n this.validateWindowStorage(cacheLocation);\r\n this.windowStorage = window[cacheLocation];\r\n }\r\n\r\n private validateWindowStorage(cacheLocation: string): void {\r\n if (cacheLocation !== BrowserCacheLocation.LocalStorage && cacheLocation !== BrowserCacheLocation.SessionStorage) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n const storageSupported = !!window[cacheLocation];\r\n if (!storageSupported) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n }\r\n\r\n getItem(key: string): string | null {\r\n return this.windowStorage.getItem(key);\r\n }\r\n\r\n setItem(key: string, value: string): void {\r\n this.windowStorage.setItem(key, value);\r\n }\r\n\r\n removeItem(key: string): void {\r\n this.windowStorage.removeItem(key);\r\n }\r\n\r\n getKeys(): string[] {\r\n return Object.keys(this.windowStorage);\r\n }\r\n\r\n containsKey(key: string): boolean {\r\n return this.windowStorage.hasOwnProperty(key);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ServerAuthorizationCodeResponse } from \"../response/ServerAuthorizationCodeResponse\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { IUri } from \"./IUri\";\r\nimport { AADAuthorityConstants, Constants } from \"../utils/Constants\";\r\n\r\n/**\r\n * Url object class which can perform various transformations on url strings.\r\n */\r\nexport class UrlString {\r\n\r\n // internal url string field\r\n private _urlString: string;\r\n public get urlString(): string {\r\n return this._urlString;\r\n }\r\n\r\n constructor(url: string) {\r\n this._urlString = url;\r\n if (StringUtils.isEmpty(this._urlString)) {\r\n // Throws error if url is empty\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n\r\n if (StringUtils.isEmpty(this.getHash())) {\r\n this._urlString = UrlString.canonicalizeUri(url);\r\n }\r\n }\r\n\r\n /**\r\n * Ensure urls are lower case and end with a / character.\r\n * @param url\r\n */\r\n static canonicalizeUri(url: string): string {\r\n if (url) {\r\n let lowerCaseUrl = url.toLowerCase();\r\n\r\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\r\n } else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\r\n }\r\n\r\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\r\n lowerCaseUrl += \"/\";\r\n }\r\n\r\n return lowerCaseUrl;\r\n }\r\n\r\n return url;\r\n }\r\n\r\n /**\r\n * Throws if urlString passed is not a valid authority URI string.\r\n */\r\n validateAsUri(): void {\r\n // Attempts to parse url for uri components\r\n let components;\r\n try {\r\n components = this.getUrlComponents();\r\n } catch (e) {\r\n throw ClientConfigurationError.createUrlParseError(e);\r\n }\r\n\r\n // Throw error if URI or path segments are not parseable.\r\n if (!components.HostNameAndPort || !components.PathSegments) {\r\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${this.urlString}`);\r\n }\r\n\r\n // Throw error if uri is insecure.\r\n if(!components.Protocol || components.Protocol.toLowerCase() !== \"https:\") {\r\n throw ClientConfigurationError.createInsecureAuthorityUriError(this.urlString);\r\n }\r\n }\r\n\r\n /**\r\n * Given a url and a query string return the url with provided query string appended\r\n * @param url\r\n * @param queryString\r\n */\r\n static appendQueryString(url: string, queryString: string): string {\r\n if (StringUtils.isEmpty(queryString)) {\r\n return url;\r\n }\r\n\r\n return url.indexOf(\"?\") < 0 ? `${url}?${queryString}` : `${url}&${queryString}`;\r\n }\r\n\r\n /**\r\n * Returns a url with the hash removed\r\n * @param url\r\n */\r\n static removeHashFromUrl(url: string): string {\r\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\r\n }\r\n\r\n /**\r\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\r\n * @param href The url\r\n * @param tenantId The tenant id to replace\r\n */\r\n replaceTenantPath(tenantId: string): UrlString {\r\n const urlObject = this.getUrlComponents();\r\n const pathArray = urlObject.PathSegments;\r\n if (tenantId && (pathArray.length !== 0 && (pathArray[0] === AADAuthorityConstants.COMMON || pathArray[0] === AADAuthorityConstants.ORGANIZATIONS))) {\r\n pathArray[0] = tenantId;\r\n }\r\n return UrlString.constructAuthorityUriFromObject(urlObject);\r\n }\r\n\r\n /**\r\n * Returns the anchor part(#) of the URL\r\n */\r\n getHash(): string {\r\n return UrlString.parseHash(this.urlString);\r\n }\r\n\r\n /**\r\n * Parses out the components from a url string.\r\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\r\n */\r\n getUrlComponents(): IUri {\r\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\r\n const regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n\r\n // If url string does not match regEx, we throw an error\r\n const match = this.urlString.match(regEx);\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${this.urlString}`);\r\n }\r\n\r\n // Url component object\r\n const urlComponents = {\r\n Protocol: match[1],\r\n HostNameAndPort: match[4],\r\n AbsolutePath: match[5],\r\n QueryString: match[7]\r\n } as IUri;\r\n\r\n let pathSegments = urlComponents.AbsolutePath.split(\"/\");\r\n pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements\r\n urlComponents.PathSegments = pathSegments;\r\n\r\n if (!StringUtils.isEmpty(urlComponents.QueryString) && urlComponents.QueryString.endsWith(\"/\")) {\r\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length-1);\r\n }\r\n return urlComponents;\r\n }\r\n\r\n static getDomainFromUrl(url: string): string {\r\n const regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\r\n\r\n const match = url.match(regEx);\r\n\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${url}`);\r\n }\r\n\r\n return match[2];\r\n }\r\n\r\n static getAbsoluteUrl(relativeUrl: string, baseUrl: string): string {\r\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\r\n const url = new UrlString(baseUrl);\r\n const baseComponents = url.getUrlComponents();\r\n\r\n return baseComponents.Protocol + \"//\" + baseComponents.HostNameAndPort + relativeUrl;\r\n }\r\n\r\n return relativeUrl;\r\n }\r\n\r\n /**\r\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\r\n * @param hashString\r\n */\r\n static parseHash(hashString: string): string {\r\n const hashIndex1 = hashString.indexOf(\"#\");\r\n const hashIndex2 = hashString.indexOf(\"#/\");\r\n if (hashIndex2 > -1) {\r\n return hashString.substring(hashIndex2 + 2);\r\n } else if (hashIndex1 > -1) {\r\n return hashString.substring(hashIndex1 + 1);\r\n }\r\n return Constants.EMPTY_STRING;\r\n }\r\n\r\n /**\r\n * Parses query string from given string. Returns empty string if no query symbol is found.\r\n * @param queryString\r\n */\r\n static parseQueryString(queryString: string): string {\r\n const queryIndex1 = queryString.indexOf(\"?\");\r\n const queryIndex2 = queryString.indexOf(\"/?\");\r\n if (queryIndex2 > -1) {\r\n return queryString.substring(queryIndex2 + 2);\r\n } else if (queryIndex1 > -1) {\r\n return queryString.substring(queryIndex1 + 1);\r\n }\r\n return Constants.EMPTY_STRING;\r\n }\r\n\r\n static constructAuthorityUriFromObject(urlObject: IUri): UrlString {\r\n return new UrlString(urlObject.Protocol + \"//\" + urlObject.HostNameAndPort + \"/\" + urlObject.PathSegments.join(\"/\"));\r\n }\r\n\r\n /**\r\n * Returns URL hash as server auth code response object.\r\n */\r\n static getDeserializedHash(hash: string): ServerAuthorizationCodeResponse {\r\n // Check if given hash is empty\r\n if (StringUtils.isEmpty(hash)) {\r\n return {};\r\n }\r\n // Strip the # symbol if present\r\n const parsedHash = UrlString.parseHash(hash);\r\n // If # symbol was not present, above will return empty string, so give original hash value\r\n const deserializedHash: ServerAuthorizationCodeResponse = StringUtils.queryStringToObject<ServerAuthorizationCodeResponse>(StringUtils.isEmpty(parsedHash) ? hash : parsedHash);\r\n // Check if deserialization didn't work\r\n if (!deserializedHash) {\r\n throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedHash));\r\n }\r\n return deserializedHash;\r\n }\r\n\r\n /**\r\n * Returns URL query string as server auth code response object.\r\n */\r\n static getDeserializedQueryString(query: string): ServerAuthorizationCodeResponse {\r\n // Check if given query is empty\r\n if (StringUtils.isEmpty(query)) {\r\n return {};\r\n }\r\n // Strip the ? symbol if present\r\n const parsedQueryString = UrlString.parseQueryString(query);\r\n // If ? symbol was not present, above will return empty string, so give original query value\r\n const deserializedQueryString: ServerAuthorizationCodeResponse = StringUtils.queryStringToObject<ServerAuthorizationCodeResponse>(StringUtils.isEmpty(parsedQueryString) ? query : parsedQueryString);\r\n // Check if deserialization didn't work\r\n if (!deserializedQueryString) {\r\n throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedQueryString));\r\n }\r\n return deserializedQueryString;\r\n }\r\n\r\n /**\r\n * Check if the hash of the URL string contains known properties\r\n */\r\n static hashContainsKnownProperties(hash: string): boolean {\r\n if (StringUtils.isEmpty(hash) || hash.indexOf(\"=\") < 0) {\r\n // Hash doesn't contain key/value pairs\r\n return false;\r\n }\r\n\r\n const parameters: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\r\n return !!(\r\n parameters.code ||\r\n parameters.error_description ||\r\n parameters.error ||\r\n parameters.state\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { InteractionType } from \"./BrowserConstants\";\r\nimport { StringUtils, ClientAuthError, ICrypto, RequestStateObject, ProtocolUtils, ServerAuthorizationCodeResponse, UrlString } from \"@azure/msal-common\";\r\n\r\nexport type BrowserStateObject = {\r\n interactionType: InteractionType\r\n};\r\n\r\nexport class BrowserProtocolUtils {\r\n\r\n /**\r\n * Extracts the BrowserStateObject from the state string.\r\n * @param browserCrypto \r\n * @param state \r\n */\r\n static extractBrowserRequestState(browserCrypto: ICrypto, state: string): BrowserStateObject | null {\r\n if (StringUtils.isEmpty(state)) {\r\n return null;\r\n }\r\n\r\n try {\r\n const requestStateObj: RequestStateObject = ProtocolUtils.parseRequestState(browserCrypto, state);\r\n return requestStateObj.libraryState.meta as BrowserStateObject;\r\n } catch (e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n }\r\n\r\n /**\r\n * Parses properties of server response from url hash\r\n * @param locationHash Hash from url\r\n */\r\n static parseServerResponseFromHash(locationHash: string): ServerAuthorizationCodeResponse {\r\n if (!locationHash) {\r\n return {};\r\n }\r\n \r\n const hashUrlString = new UrlString(locationHash);\r\n return UrlString.getDeserializedHash(hashUrlString.getHash());\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants, PersistentCacheKeys, StringUtils, CommonAuthorizationCodeRequest, ICrypto, AccountEntity, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, CacheManager, ServerTelemetryEntity, ThrottlingEntity, ProtocolUtils, Logger, AuthorityMetadataEntity, DEFAULT_CRYPTO_IMPLEMENTATION, AccountInfo, ActiveAccountFilters, CcsCredential, CcsCredentialType, IdToken, ValidCredentialType, ClientAuthError, TokenKeys, CredentialType } from \"@azure/msal-common\";\r\nimport { CacheOptions } from \"../config/Configuration\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { BrowserCacheLocation, InteractionType, TemporaryCacheKeys, InMemoryCacheKeys, StaticCacheKeys } from \"../utils/BrowserConstants\";\r\nimport { BrowserStorage } from \"./BrowserStorage\";\r\nimport { MemoryStorage } from \"./MemoryStorage\";\r\nimport { IWindowStorage } from \"./IWindowStorage\";\r\nimport { BrowserProtocolUtils } from \"../utils/BrowserProtocolUtils\";\r\nimport { NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest\";\r\n\r\n/**\r\n * This class implements the cache storage interface for MSAL through browser local or session storage.\r\n * Cookies are only used if storeAuthStateInCookie is true, and are only used for\r\n * parameters such as state and nonce, generally.\r\n */\r\nexport class BrowserCacheManager extends CacheManager {\r\n\r\n // Cache configuration, either set by user or default values.\r\n protected cacheConfig: Required<CacheOptions>;\r\n // Window storage object (either local or sessionStorage)\r\n protected browserStorage: IWindowStorage<string>;\r\n // Internal in-memory storage object used for data used by msal that does not need to persist across page loads\r\n protected internalStorage: MemoryStorage<string>;\r\n // Temporary cache\r\n protected temporaryCacheStorage: IWindowStorage<string>;\r\n // Logger instance\r\n protected logger: Logger;\r\n\r\n // Cookie life calculation (hours * minutes * seconds * ms)\r\n protected readonly COOKIE_LIFE_MULTIPLIER = 24 * 60 * 60 * 1000;\r\n\r\n constructor(clientId: string, cacheConfig: Required<CacheOptions>, cryptoImpl: ICrypto, logger: Logger) {\r\n super(clientId, cryptoImpl, logger);\r\n this.cacheConfig = cacheConfig;\r\n this.logger = logger;\r\n this.internalStorage = new MemoryStorage();\r\n this.browserStorage = this.setupBrowserStorage(this.cacheConfig.cacheLocation);\r\n this.temporaryCacheStorage = this.setupTemporaryCacheStorage(this.cacheConfig.temporaryCacheLocation, this.cacheConfig.cacheLocation);\r\n\r\n // Migrate cache entries from older versions of MSAL.\r\n if (cacheConfig.cacheMigrationEnabled) {\r\n this.migrateCacheEntries();\r\n this.createKeyMaps();\r\n }\r\n }\r\n\r\n /**\r\n * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation.\r\n * @param cacheLocation\r\n */\r\n protected setupBrowserStorage(cacheLocation: BrowserCacheLocation | string): IWindowStorage<string> {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n return new BrowserStorage(cacheLocation);\r\n } catch (e) {\r\n this.logger.verbose(e);\r\n break;\r\n }\r\n case BrowserCacheLocation.MemoryStorage:\r\n default:\r\n break;\r\n }\r\n this.cacheConfig.cacheLocation = BrowserCacheLocation.MemoryStorage;\r\n return new MemoryStorage();\r\n }\r\n\r\n /**\r\n * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured temporaryCacheLocation.\r\n * @param temporaryCacheLocation\r\n * @param cacheLocation\r\n */\r\n protected setupTemporaryCacheStorage(temporaryCacheLocation: BrowserCacheLocation | string, cacheLocation: BrowserCacheLocation | string): IWindowStorage<string> {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n /*\r\n * When users do not explicitly choose their own temporaryCacheLocation, \r\n * temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\r\n */\r\n return new BrowserStorage(temporaryCacheLocation || BrowserCacheLocation.SessionStorage);\r\n } catch (e) {\r\n this.logger.verbose(e);\r\n return this.internalStorage;\r\n }\r\n case BrowserCacheLocation.MemoryStorage:\r\n default:\r\n return this.internalStorage;\r\n }\r\n }\r\n\r\n /**\r\n * Migrate all old cache entries to new schema. No rollback supported.\r\n * @param storeAuthStateInCookie\r\n */\r\n protected migrateCacheEntries(): void {\r\n const idTokenKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ID_TOKEN}`;\r\n const clientInfoKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.CLIENT_INFO}`;\r\n const errorKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ERROR}`;\r\n const errorDescKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ERROR_DESC}`;\r\n\r\n const idTokenValue = this.browserStorage.getItem(idTokenKey);\r\n const clientInfoValue = this.browserStorage.getItem(clientInfoKey);\r\n const errorValue = this.browserStorage.getItem(errorKey);\r\n const errorDescValue = this.browserStorage.getItem(errorDescKey);\r\n\r\n const values = [idTokenValue, clientInfoValue, errorValue, errorDescValue];\r\n const keysToMigrate = [PersistentCacheKeys.ID_TOKEN, PersistentCacheKeys.CLIENT_INFO, PersistentCacheKeys.ERROR, PersistentCacheKeys.ERROR_DESC];\r\n\r\n keysToMigrate.forEach((cacheKey: string, index: number) => this.migrateCacheEntry(cacheKey, values[index]));\r\n }\r\n\r\n /**\r\n * Utility function to help with migration.\r\n * @param newKey\r\n * @param value\r\n * @param storeAuthStateInCookie\r\n */\r\n protected migrateCacheEntry(newKey: string, value: string | null): void {\r\n if (value) {\r\n this.setTemporaryCache(newKey, value, true);\r\n }\r\n }\r\n\r\n /**\r\n * Searches all cache entries for MSAL accounts and creates the account key map\r\n * This is used to migrate users from older versions of MSAL which did not create the map.\r\n * @returns \r\n */\r\n private createKeyMaps(): void {\r\n this.logger.trace(\"BrowserCacheManager - createKeyMaps called.\");\r\n const accountKeys = this.getItem(StaticCacheKeys.ACCOUNT_KEYS);\r\n const tokenKeys = this.getItem(`${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`);\r\n if (accountKeys && tokenKeys) {\r\n this.logger.verbose(\"BrowserCacheManager:createKeyMaps - account and token key maps already exist, skipping migration.\");\r\n // Key maps already exist, no need to iterate through cache\r\n return;\r\n }\r\n\r\n const allKeys = this.browserStorage.getKeys();\r\n allKeys.forEach((key) => {\r\n if (this.isCredentialKey(key)) {\r\n // Get item, parse, validate and write key to map\r\n const value = this.getItem(key);\r\n if (value) {\r\n const credObj = this.validateAndParseJson(value);\r\n if (credObj && credObj.hasOwnProperty(\"credentialType\")) {\r\n switch (credObj[\"credentialType\"]) {\r\n case CredentialType.ID_TOKEN:\r\n if (IdTokenEntity.isIdTokenEntity(credObj)) {\r\n this.logger.trace(\"BrowserCacheManager:createKeyMaps - idToken found, saving key to token key map\");\r\n this.logger.tracePii(`BrowserCacheManager:createKeyMaps - idToken with key: ${key} found, saving key to token key map`);\r\n const idTokenEntity = CacheManager.toObject(new IdTokenEntity(), credObj);\r\n const newKey = this.updateCredentialCacheKey(key, idTokenEntity);\r\n this.addTokenKey(newKey, CredentialType.ID_TOKEN);\r\n return;\r\n } else {\r\n this.logger.trace(\"BrowserCacheManager:createKeyMaps - key found matching idToken schema with value containing idToken credentialType field but value failed IdTokenEntity validation, skipping.\");\r\n this.logger.tracePii(`BrowserCacheManager:createKeyMaps - failed idToken validation on key: ${key}`);\r\n }\r\n break;\r\n case CredentialType.ACCESS_TOKEN:\r\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\r\n if (AccessTokenEntity.isAccessTokenEntity(credObj)) {\r\n this.logger.trace(\"BrowserCacheManager:createKeyMaps - accessToken found, saving key to token key map\");\r\n this.logger.tracePii(`BrowserCacheManager:createKeyMaps - accessToken with key: ${key} found, saving key to token key map`);\r\n const accessTokenEntity = CacheManager.toObject(new AccessTokenEntity(), credObj);\r\n const newKey = this.updateCredentialCacheKey(key, accessTokenEntity);\r\n this.addTokenKey(newKey, CredentialType.ACCESS_TOKEN);\r\n return;\r\n } else {\r\n this.logger.trace(\"BrowserCacheManager:createKeyMaps - key found matching accessToken schema with value containing accessToken credentialType field but value failed AccessTokenEntity validation, skipping.\");\r\n this.logger.tracePii(`BrowserCacheManager:createKeyMaps - failed accessToken validation on key: ${key}`);\r\n }\r\n break;\r\n case CredentialType.REFRESH_TOKEN:\r\n if (RefreshTokenEntity.isRefreshTokenEntity(credObj)) {\r\n this.logger.trace(\"BrowserCacheManager:createKeyMaps - refreshToken found, saving key to token key map\");\r\n this.logger.tracePii(`BrowserCacheManager:createKeyMaps - refreshToken with key: ${key} found, saving key to token key map`);\r\n const refreshTokenEntity = CacheManager.toObject(new RefreshTokenEntity(), credObj);\r\n const newKey = this.updateCredentialCacheKey(key, refreshTokenEntity);\r\n this.addTokenKey(newKey, CredentialType.REFRESH_TOKEN);\r\n return;\r\n } else {\r\n this.logger.trace(\"BrowserCacheManager:createKeyMaps - key found matching refreshToken schema with value containing refreshToken credentialType field but value failed RefreshTokenEntity validation, skipping.\");\r\n this.logger.tracePii(`BrowserCacheManager:createKeyMaps - failed refreshToken validation on key: ${key}`);\r\n }\r\n break;\r\n default:\r\n // If credentialType isn't one of our predefined ones, it may not be an MSAL cache value. Ignore.\r\n }\r\n }\r\n }\r\n } \r\n \r\n if (this.isAccountKey(key)) {\r\n const value = this.getItem(key);\r\n if (value) {\r\n const accountObj = this.validateAndParseJson(value);\r\n if (accountObj && AccountEntity.isAccountEntity(accountObj)) {\r\n this.logger.trace(\"BrowserCacheManager:createKeyMaps - account found, saving key to account key map\");\r\n this.logger.tracePii(`BrowserCacheManager:createKeyMaps - account with key: ${key} found, saving key to account key map`);\r\n this.addAccountKeyToMap(key);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Parses passed value as JSON object, JSON.parse() will throw an error.\r\n * @param input\r\n */\r\n protected validateAndParseJson(jsonValue: string): object | null {\r\n try {\r\n const parsedJson = JSON.parse(jsonValue);\r\n /**\r\n * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object\r\n * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check\r\n * of the parsed value is necessary in order to be certain that the string represents a valid JSON object.\r\n *\r\n */\r\n return (parsedJson && typeof parsedJson === \"object\") ? parsedJson : null;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * fetches the entry from the browser storage based off the key\r\n * @param key\r\n */\r\n getItem(key: string): string | null {\r\n return this.browserStorage.getItem(key);\r\n }\r\n\r\n /**\r\n * sets the entry in the browser storage\r\n * @param key\r\n * @param value\r\n */\r\n setItem(key: string, value: string): void {\r\n this.browserStorage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * fetch the account entity from the platform cache\r\n * @param accountKey\r\n */\r\n getAccount(accountKey: string): AccountEntity | null {\r\n this.logger.trace(\"BrowserCacheManager.getAccount called\");\r\n const account = this.getItem(accountKey);\r\n if (!account) {\r\n this.removeAccountKeyFromMap(accountKey);\r\n return null;\r\n }\r\n\r\n const parsedAccount = this.validateAndParseJson(account);\r\n if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) {\r\n this.removeAccountKeyFromMap(accountKey);\r\n return null;\r\n }\r\n\r\n return CacheManager.toObject<AccountEntity>(new AccountEntity(), parsedAccount);\r\n }\r\n\r\n /**\r\n * set account entity in the platform cache\r\n * @param key\r\n * @param value\r\n */\r\n setAccount(account: AccountEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setAccount called\");\r\n const key = account.generateAccountKey();\r\n this.setItem(key, JSON.stringify(account));\r\n this.addAccountKeyToMap(key);\r\n }\r\n\r\n /**\r\n * Returns the array of account keys currently cached\r\n * @returns \r\n */\r\n getAccountKeys(): Array<string> {\r\n this.logger.trace(\"BrowserCacheManager.getAccountKeys called\");\r\n const accountKeys = this.getItem(StaticCacheKeys.ACCOUNT_KEYS);\r\n if (accountKeys) {\r\n return JSON.parse(accountKeys);\r\n }\r\n\r\n this.logger.verbose(\"BrowserCacheManager.getAccountKeys - No account keys found\");\r\n return [];\r\n }\r\n\r\n /**\r\n * Add a new account to the key map\r\n * @param key \r\n */\r\n addAccountKeyToMap(key: string): void {\r\n this.logger.trace(\"BrowserCacheManager.addAccountKeyToMap called\");\r\n this.logger.tracePii(`BrowserCacheManager.addAccountKeyToMap called with key: ${key}`);\r\n const accountKeys = this.getAccountKeys();\r\n if (accountKeys.indexOf(key) === -1) {\r\n // Only add key if it does not already exist in the map\r\n accountKeys.push(key);\r\n this.setItem(StaticCacheKeys.ACCOUNT_KEYS, JSON.stringify(accountKeys));\r\n this.logger.verbose(\"BrowserCacheManager.addAccountKeyToMap account key added\");\r\n } else {\r\n this.logger.verbose(\"BrowserCacheManager.addAccountKeyToMap account key already exists in map\");\r\n }\r\n }\r\n\r\n /**\r\n * Remove an account from the key map\r\n * @param key \r\n */\r\n removeAccountKeyFromMap(key: string): void {\r\n this.logger.trace(\"BrowserCacheManager.removeAccountKeyFromMap called\");\r\n this.logger.tracePii(`BrowserCacheManager.removeAccountKeyFromMap called with key: ${key}`);\r\n const accountKeys = this.getAccountKeys();\r\n const removalIndex = accountKeys.indexOf(key);\r\n if (removalIndex > -1) {\r\n accountKeys.splice(removalIndex, 1);\r\n this.setItem(StaticCacheKeys.ACCOUNT_KEYS, JSON.stringify(accountKeys));\r\n this.logger.trace(\"BrowserCacheManager.removeAccountKeyFromMap account key removed\");\r\n } else {\r\n this.logger.trace(\"BrowserCacheManager.removeAccountKeyFromMap key not found in existing map\");\r\n }\r\n }\r\n\r\n /**\r\n * Extends inherited removeAccount function to include removal of the account key from the map\r\n * @param key \r\n */\r\n async removeAccount(key: string): Promise<void> {\r\n super.removeAccount(key);\r\n this.removeAccountKeyFromMap(key);\r\n }\r\n\r\n /**\r\n * Removes given idToken from the cache and from the key map\r\n * @param key \r\n */\r\n removeIdToken(key: string): void {\r\n super.removeIdToken(key);\r\n this.removeTokenKey(key, CredentialType.ID_TOKEN);\r\n }\r\n\r\n /**\r\n * Removes given accessToken from the cache and from the key map\r\n * @param key \r\n */\r\n async removeAccessToken(key: string): Promise<void> {\r\n super.removeAccessToken(key);\r\n this.removeTokenKey(key, CredentialType.ACCESS_TOKEN);\r\n }\r\n\r\n /**\r\n * Removes given refreshToken from the cache and from the key map\r\n * @param key \r\n */\r\n removeRefreshToken(key: string): void {\r\n super.removeRefreshToken(key);\r\n this.removeTokenKey(key, CredentialType.REFRESH_TOKEN);\r\n }\r\n\r\n /**\r\n * Gets the keys for the cached tokens associated with this clientId\r\n * @returns \r\n */\r\n getTokenKeys(): TokenKeys {\r\n this.logger.trace(\"BrowserCacheManager.getTokenKeys called\");\r\n const item = this.getItem(`${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`);\r\n if (item) {\r\n const tokenKeys = this.validateAndParseJson(item);\r\n if (tokenKeys && \r\n tokenKeys.hasOwnProperty(\"idToken\") &&\r\n tokenKeys.hasOwnProperty(\"accessToken\") &&\r\n tokenKeys.hasOwnProperty(\"refreshToken\")\r\n ) {\r\n return tokenKeys as TokenKeys;\r\n } else {\r\n this.logger.error(\"BrowserCacheManager.getTokenKeys - Token keys found but in an unknown format. Returning empty key map.\");\r\n }\r\n } else {\r\n this.logger.verbose(\"BrowserCacheManager.getTokenKeys - No token keys found\");\r\n }\r\n\r\n return {\r\n idToken: [],\r\n accessToken: [],\r\n refreshToken: []\r\n };\r\n }\r\n\r\n /**\r\n * Adds the given key to the token key map\r\n * @param key \r\n * @param type \r\n */\r\n addTokenKey(key: string, type: CredentialType): void {\r\n this.logger.trace(\"BrowserCacheManager addTokenKey called\");\r\n const tokenKeys = this.getTokenKeys();\r\n\r\n switch (type) {\r\n case CredentialType.ID_TOKEN:\r\n if (tokenKeys.idToken.indexOf(key) === -1) {\r\n this.logger.info(\"BrowserCacheManager: addTokenKey - idToken added to map\");\r\n tokenKeys.idToken.push(key);\r\n }\r\n break;\r\n case CredentialType.ACCESS_TOKEN:\r\n if (tokenKeys.accessToken.indexOf(key) === -1) {\r\n this.logger.info(\"BrowserCacheManager: addTokenKey - accessToken added to map\");\r\n tokenKeys.accessToken.push(key);\r\n }\r\n break;\r\n case CredentialType.REFRESH_TOKEN:\r\n if (tokenKeys.refreshToken.indexOf(key) === -1) {\r\n this.logger.info(\"BrowserCacheManager: addTokenKey - refreshToken added to map\");\r\n tokenKeys.refreshToken.push(key);\r\n }\r\n break;\r\n default:\r\n this.logger.error(`BrowserCacheManager:addTokenKey - CredentialType provided invalid. CredentialType: ${type}`);\r\n ClientAuthError.createUnexpectedCredentialTypeError();\r\n }\r\n\r\n this.setItem(`${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`, JSON.stringify(tokenKeys));\r\n }\r\n\r\n /**\r\n * Removes the given key from the token key map\r\n * @param key \r\n * @param type \r\n */\r\n removeTokenKey(key: string, type: CredentialType): void {\r\n this.logger.trace(\"BrowserCacheManager removeTokenKey called\");\r\n const tokenKeys = this.getTokenKeys();\r\n\r\n switch (type) {\r\n case CredentialType.ID_TOKEN:\r\n this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove idToken with key: ${key} from map`);\r\n const idRemoval = tokenKeys.idToken.indexOf(key);\r\n if (idRemoval > -1) {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - idToken removed from map\");\r\n tokenKeys.idToken.splice(idRemoval, 1);\r\n } else {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - idToken does not exist in map. Either it was previously removed or it was never added.\");\r\n }\r\n break;\r\n case CredentialType.ACCESS_TOKEN:\r\n this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove accessToken with key: ${key} from map`);\r\n const accessRemoval = tokenKeys.accessToken.indexOf(key);\r\n if (accessRemoval > -1) {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - accessToken removed from map\");\r\n tokenKeys.accessToken.splice(accessRemoval, 1);\r\n } else {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - accessToken does not exist in map. Either it was previously removed or it was never added.\");\r\n }\r\n break;\r\n case CredentialType.REFRESH_TOKEN:\r\n this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove refreshToken with key: ${key} from map`);\r\n const refreshRemoval = tokenKeys.refreshToken.indexOf(key);\r\n if (refreshRemoval > -1) {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - refreshToken removed from map\");\r\n tokenKeys.refreshToken.splice(refreshRemoval, 1);\r\n } else {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - refreshToken does not exist in map. Either it was previously removed or it was never added.\");\r\n }\r\n break;\r\n default:\r\n this.logger.error(`BrowserCacheManager:removeTokenKey - CredentialType provided invalid. CredentialType: ${type}`);\r\n ClientAuthError.createUnexpectedCredentialTypeError();\r\n }\r\n\r\n this.setItem(`${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`, JSON.stringify(tokenKeys));\r\n }\r\n\r\n /**\r\n * generates idToken entity from a string\r\n * @param idTokenKey\r\n */\r\n getIdTokenCredential(idTokenKey: string): IdTokenEntity | null {\r\n const value = this.getItem(idTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(idTokenKey, CredentialType.ID_TOKEN);\r\n return null;\r\n }\r\n\r\n const parsedIdToken = this.validateAndParseJson(value);\r\n if (!parsedIdToken || !IdTokenEntity.isIdTokenEntity(parsedIdToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(idTokenKey, CredentialType.ID_TOKEN);\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: cache hit\");\r\n return CacheManager.toObject(new IdTokenEntity(), parsedIdToken);\r\n }\r\n\r\n /**\r\n * set IdToken credential to the platform cache\r\n * @param idToken\r\n */\r\n setIdTokenCredential(idToken: IdTokenEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setIdTokenCredential called\");\r\n const idTokenKey = idToken.generateCredentialKey();\r\n\r\n this.setItem(idTokenKey, JSON.stringify(idToken));\r\n\r\n this.addTokenKey(idTokenKey, CredentialType.ID_TOKEN);\r\n }\r\n\r\n /**\r\n * generates accessToken entity from a string\r\n * @param key\r\n */\r\n getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null {\r\n const value = this.getItem(accessTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN);\r\n return null;\r\n }\r\n const parsedAccessToken = this.validateAndParseJson(value);\r\n if (!parsedAccessToken || !AccessTokenEntity.isAccessTokenEntity(parsedAccessToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN);\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: cache hit\");\r\n return CacheManager.toObject(new AccessTokenEntity(), parsedAccessToken);\r\n }\r\n\r\n /**\r\n * set accessToken credential to the platform cache\r\n * @param accessToken\r\n */\r\n setAccessTokenCredential(accessToken: AccessTokenEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setAccessTokenCredential called\");\r\n const accessTokenKey = accessToken.generateCredentialKey();\r\n this.setItem(accessTokenKey, JSON.stringify(accessToken));\r\n\r\n this.addTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN);\r\n }\r\n\r\n /**\r\n * generates refreshToken entity from a string\r\n * @param refreshTokenKey\r\n */\r\n getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null {\r\n const value = this.getItem(refreshTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN);\r\n return null;\r\n }\r\n const parsedRefreshToken = this.validateAndParseJson(value);\r\n if (!parsedRefreshToken || !RefreshTokenEntity.isRefreshTokenEntity(parsedRefreshToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN);\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: cache hit\");\r\n return CacheManager.toObject(new RefreshTokenEntity(), parsedRefreshToken);\r\n }\r\n\r\n /**\r\n * set refreshToken credential to the platform cache\r\n * @param refreshToken\r\n */\r\n setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setRefreshTokenCredential called\");\r\n const refreshTokenKey = refreshToken.generateCredentialKey();\r\n this.setItem(refreshTokenKey, JSON.stringify(refreshToken));\r\n\r\n this.addTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN);\r\n }\r\n\r\n /**\r\n * fetch appMetadata entity from the platform cache\r\n * @param appMetadataKey\r\n */\r\n getAppMetadata(appMetadataKey: string): AppMetadataEntity | null {\r\n const value = this.getItem(appMetadataKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n const parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !AppMetadataEntity.isAppMetadataEntity(appMetadataKey, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: cache hit\");\r\n return CacheManager.toObject(new AppMetadataEntity(), parsedMetadata);\r\n }\r\n\r\n /**\r\n * set appMetadata entity to the platform cache\r\n * @param appMetadata\r\n */\r\n setAppMetadata(appMetadata: AppMetadataEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setAppMetadata called\");\r\n const appMetadataKey = appMetadata.generateAppMetadataKey();\r\n this.setItem(appMetadataKey, JSON.stringify(appMetadata));\r\n }\r\n\r\n /**\r\n * fetch server telemetry entity from the platform cache\r\n * @param serverTelemetryKey\r\n */\r\n getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null {\r\n const value = this.getItem(serverTelemetryKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\r\n return null;\r\n }\r\n const parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !ServerTelemetryEntity.isServerTelemetryEntity(serverTelemetryKey, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: cache hit\");\r\n return CacheManager.toObject(new ServerTelemetryEntity(), parsedMetadata);\r\n }\r\n\r\n /**\r\n * set server telemetry entity to the platform cache\r\n * @param serverTelemetryKey\r\n * @param serverTelemetry\r\n */\r\n setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setServerTelemetry called\");\r\n this.setItem(serverTelemetryKey, JSON.stringify(serverTelemetry));\r\n }\r\n\r\n /**\r\n *\r\n */\r\n getAuthorityMetadata(key: string): AuthorityMetadataEntity | null {\r\n const value = this.internalStorage.getItem(key);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n const parsedMetadata = this.validateAndParseJson(value);\r\n if (parsedMetadata && AuthorityMetadataEntity.isAuthorityMetadataEntity(key, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: cache hit\");\r\n return CacheManager.toObject(new AuthorityMetadataEntity(), parsedMetadata);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n *\r\n */\r\n getAuthorityMetadataKeys(): Array<string> {\r\n const allKeys = this.internalStorage.getKeys();\r\n return allKeys.filter((key) => {\r\n return this.isAuthorityMetadata(key);\r\n });\r\n }\r\n\r\n /**\r\n * Sets wrapper metadata in memory\r\n * @param wrapperSKU\r\n * @param wrapperVersion\r\n */\r\n setWrapperMetadata(wrapperSKU: string, wrapperVersion: string): void {\r\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_SKU, wrapperSKU);\r\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_VER, wrapperVersion);\r\n }\r\n\r\n /**\r\n * Returns wrapper metadata from in-memory storage\r\n */\r\n getWrapperMetadata(): [string, string] {\r\n const sku = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_SKU) || Constants.EMPTY_STRING;\r\n const version = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_VER) || Constants.EMPTY_STRING;\r\n return [sku, version];\r\n }\r\n\r\n /**\r\n *\r\n * @param entity\r\n */\r\n setAuthorityMetadata(key: string, entity: AuthorityMetadataEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setAuthorityMetadata called\");\r\n this.internalStorage.setItem(key, JSON.stringify(entity));\r\n }\r\n\r\n /**\r\n * Gets the active account\r\n */\r\n getActiveAccount(): AccountInfo | null {\r\n const activeAccountKeyFilters = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS);\r\n const activeAccountValueFilters = this.getItem(activeAccountKeyFilters);\r\n if (!activeAccountValueFilters) {\r\n // if new active account cache type isn't found, it's an old version, so look for that instead\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: No active account filters cache schema found, looking for legacy schema\");\r\n const activeAccountKeyLocal = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\r\n const activeAccountValueLocal = this.getItem(activeAccountKeyLocal);\r\n if (!activeAccountValueLocal) {\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: No active account found\");\r\n return null;\r\n }\r\n const activeAccount = this.getAccountInfoByFilter({ localAccountId: activeAccountValueLocal })[0] || null;\r\n if (activeAccount) {\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: Legacy active account cache schema found\");\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: Adding active account filters cache schema\");\r\n this.setActiveAccount(activeAccount);\r\n return activeAccount;\r\n }\r\n return null;\r\n }\r\n const activeAccountValueObj = this.validateAndParseJson(activeAccountValueFilters) as AccountInfo;\r\n if (activeAccountValueObj) {\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: Active account filters schema found\");\r\n return this.getAccountInfoByFilter({\r\n homeAccountId: activeAccountValueObj.homeAccountId,\r\n localAccountId: activeAccountValueObj.localAccountId\r\n })[0] || null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: No active account found\");\r\n return null;\r\n }\r\n\r\n /**\r\n * Sets the active account's localAccountId in cache\r\n * @param account\r\n */\r\n setActiveAccount(account: AccountInfo | null): void {\r\n const activeAccountKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS);\r\n const activeAccountKeyLocal = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\r\n if (account) {\r\n this.logger.verbose(\"setActiveAccount: Active account set\");\r\n const activeAccountValue: ActiveAccountFilters = {\r\n homeAccountId: account.homeAccountId,\r\n localAccountId: account.localAccountId\r\n };\r\n this.browserStorage.setItem(activeAccountKey, JSON.stringify(activeAccountValue));\r\n this.browserStorage.setItem(activeAccountKeyLocal, account.localAccountId);\r\n } else {\r\n this.logger.verbose(\"setActiveAccount: No account passed, active account not set\");\r\n this.browserStorage.removeItem(activeAccountKey);\r\n this.browserStorage.removeItem(activeAccountKeyLocal);\r\n }\r\n }\r\n\r\n /**\r\n * Gets a list of accounts that match all of the filters provided\r\n * @param account\r\n */\r\n getAccountInfoByFilter(accountFilter: Partial<Omit<AccountInfo, \"idTokenClaims\" | \"name\">>): AccountInfo[] {\r\n const allAccounts = this.getAllAccounts();\r\n this.logger.trace(`BrowserCacheManager.getAccountInfoByFilter: total ${allAccounts.length} accounts found`);\r\n\r\n return allAccounts.filter((accountObj) => {\r\n if (accountFilter.username && accountFilter.username.toLowerCase() !== accountObj.username.toLowerCase()) {\r\n return false;\r\n }\r\n\r\n if (accountFilter.homeAccountId && accountFilter.homeAccountId !== accountObj.homeAccountId) {\r\n return false;\r\n }\r\n\r\n if (accountFilter.localAccountId && accountFilter.localAccountId !== accountObj.localAccountId) {\r\n return false;\r\n }\r\n\r\n if (accountFilter.tenantId && accountFilter.tenantId !== accountObj.tenantId) {\r\n return false;\r\n }\r\n\r\n if (accountFilter.environment && accountFilter.environment !== accountObj.environment) {\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n /**\r\n * Checks the cache for accounts matching loginHint or SID\r\n * @param loginHint\r\n * @param sid\r\n */\r\n getAccountInfoByHints(loginHint?: string, sid?: string): AccountInfo | null {\r\n const matchingAccounts = this.getAllAccounts().filter((accountInfo) => {\r\n if (sid) {\r\n const accountSid = accountInfo.idTokenClaims && accountInfo.idTokenClaims[\"sid\"];\r\n return sid === accountSid;\r\n }\r\n\r\n if (loginHint) {\r\n return loginHint === accountInfo.username;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n if (matchingAccounts.length === 1) {\r\n return matchingAccounts[0];\r\n } else if (matchingAccounts.length > 1) {\r\n throw ClientAuthError.createMultipleMatchingAccountsInCacheError();\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * fetch throttling entity from the platform cache\r\n * @param throttlingCacheKey\r\n */\r\n getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null {\r\n const value = this.getItem(throttlingCacheKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n const parsedThrottlingCache = this.validateAndParseJson(value);\r\n if (!parsedThrottlingCache || !ThrottlingEntity.isThrottlingEntity(throttlingCacheKey, parsedThrottlingCache)) {\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: cache hit\");\r\n return CacheManager.toObject(new ThrottlingEntity(), parsedThrottlingCache);\r\n }\r\n\r\n /**\r\n * set throttling entity to the platform cache\r\n * @param throttlingCacheKey\r\n * @param throttlingCache\r\n */\r\n setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setThrottlingCache called\");\r\n this.setItem(throttlingCacheKey, JSON.stringify(throttlingCache));\r\n }\r\n\r\n /**\r\n * Gets cache item with given key.\r\n * Will retrieve from cookies if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n getTemporaryCache(cacheKey: string, generateKey?: boolean): string | null {\r\n const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n const itemCookie = this.getItemCookie(key);\r\n if (itemCookie) {\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies\");\r\n return itemCookie;\r\n }\r\n }\r\n\r\n const value = this.temporaryCacheStorage.getItem(key);\r\n if (!value) {\r\n // If temp cache item not found in session/memory, check local storage for items set by old versions\r\n if (this.cacheConfig.cacheLocation === BrowserCacheLocation.LocalStorage) {\r\n const item = this.browserStorage.getItem(key);\r\n if (item) {\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage\");\r\n return item;\r\n }\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: No cache item found in local storage\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item returned\");\r\n return value;\r\n }\r\n\r\n /**\r\n * Sets the cache item with the key and value given.\r\n * Stores in cookie if storeAuthStateInCookie is set to true.\r\n * This can cause cookie overflow if used incorrectly.\r\n * @param key\r\n * @param value\r\n */\r\n setTemporaryCache(cacheKey: string, value: string, generateKey?: boolean): void {\r\n const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n\r\n this.temporaryCacheStorage.setItem(key, value);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.trace(\"BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie\");\r\n this.setItemCookie(key, value);\r\n }\r\n }\r\n\r\n /**\r\n * Removes the cache item with the given key.\r\n * Will also clear the cookie item if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n removeItem(key: string): void {\r\n this.browserStorage.removeItem(key);\r\n this.temporaryCacheStorage.removeItem(key);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.trace(\"BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie\");\r\n this.clearItemCookie(key);\r\n }\r\n }\r\n\r\n /**\r\n * Checks whether key is in cache.\r\n * @param key\r\n */\r\n containsKey(key: string): boolean {\r\n return this.browserStorage.containsKey(key) || this.temporaryCacheStorage.containsKey(key);\r\n }\r\n\r\n /**\r\n * Gets all keys in window.\r\n */\r\n getKeys(): string[] {\r\n return [\r\n ...this.browserStorage.getKeys(),\r\n ...this.temporaryCacheStorage.getKeys()\r\n ];\r\n }\r\n\r\n /**\r\n * Clears all cache entries created by MSAL.\r\n */\r\n async clear(): Promise<void> {\r\n // Removes all accounts and their credentials\r\n await this.removeAllAccounts();\r\n this.removeAppMetadata();\r\n\r\n // Removes all remaining MSAL cache items\r\n this.getKeys().forEach((cacheKey: string) => {\r\n // Check if key contains msal prefix; For now, we are clearing all the cache items created by MSAL.js\r\n if ((this.browserStorage.containsKey(cacheKey) || this.temporaryCacheStorage.containsKey(cacheKey)) && ((cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1) || (cacheKey.indexOf(this.clientId) !== -1))) {\r\n this.removeItem(cacheKey);\r\n }\r\n });\r\n\r\n this.internalStorage.clear();\r\n }\r\n\r\n /**\r\n * Clears all access tokes that have claims prior to saving the current one\r\n * @param credential \r\n * @returns \r\n */\r\n async clearTokensAndKeysWithClaims(): Promise<void> {\r\n\r\n this.logger.trace(\"BrowserCacheManager.clearTokensAndKeysWithClaims called\");\r\n const tokenKeys = this.getTokenKeys();\r\n \r\n const removedAccessTokens: Array<Promise<void>> = [];\r\n tokenKeys.accessToken.forEach((key: string) => {\r\n // if the access token has claims in its key, remove the token key and the token\r\n const credential = this.getAccessTokenCredential(key);\r\n if(credential?.requestedClaimsHash && key.includes(credential.requestedClaimsHash.toLowerCase())) {\r\n removedAccessTokens.push(this.removeAccessToken(key));\r\n }\r\n });\r\n await Promise.all(removedAccessTokens);\r\n\r\n // warn if any access tokens are removed\r\n if(removedAccessTokens.length > 0) {\r\n this.logger.warning(`${removedAccessTokens.length} access tokens with claims in the cache keys have been removed from the cache.`);\r\n }\r\n }\r\n\r\n /**\r\n * Add value to cookies\r\n * @param cookieName\r\n * @param cookieValue\r\n * @param expires\r\n */\r\n setItemCookie(cookieName: string, cookieValue: string, expires?: number): void {\r\n let cookieStr = `${encodeURIComponent(cookieName)}=${encodeURIComponent(cookieValue)};path=/;SameSite=Lax;`;\r\n if (expires) {\r\n const expireTime = this.getCookieExpirationTime(expires);\r\n cookieStr += `expires=${expireTime};`;\r\n }\r\n\r\n if (this.cacheConfig.secureCookies) {\r\n cookieStr += \"Secure;\";\r\n }\r\n\r\n document.cookie = cookieStr;\r\n }\r\n\r\n /**\r\n * Get one item by key from cookies\r\n * @param cookieName\r\n */\r\n getItemCookie(cookieName: string): string {\r\n const name = `${encodeURIComponent(cookieName)}=`;\r\n const cookieList = document.cookie.split(\";\");\r\n for (let i: number = 0; i < cookieList.length; i++) {\r\n let cookie = cookieList[i];\r\n while (cookie.charAt(0) === \" \") {\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(name) === 0) {\r\n return decodeURIComponent(cookie.substring(name.length, cookie.length));\r\n }\r\n }\r\n return Constants.EMPTY_STRING;\r\n }\r\n\r\n /**\r\n * Clear all msal-related cookies currently set in the browser. Should only be used to clear temporary cache items.\r\n */\r\n clearMsalCookies(): void {\r\n const cookiePrefix = `${Constants.CACHE_PREFIX}.${this.clientId}`;\r\n const cookieList = document.cookie.split(\";\");\r\n cookieList.forEach((cookie: string): void => {\r\n while (cookie.charAt(0) === \" \") {\r\n // eslint-disable-next-line no-param-reassign\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(cookiePrefix) === 0) {\r\n const cookieKey = cookie.split(\"=\")[0];\r\n this.clearItemCookie(cookieKey);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Clear an item in the cookies by key\r\n * @param cookieName\r\n */\r\n clearItemCookie(cookieName: string): void {\r\n this.setItemCookie(cookieName, Constants.EMPTY_STRING, -1);\r\n }\r\n\r\n /**\r\n * Get cookie expiration time\r\n * @param cookieLifeDays\r\n */\r\n getCookieExpirationTime(cookieLifeDays: number): string {\r\n const today = new Date();\r\n const expr = new Date(today.getTime() + cookieLifeDays * this.COOKIE_LIFE_MULTIPLIER);\r\n return expr.toUTCString();\r\n }\r\n\r\n /**\r\n * Gets the cache object referenced by the browser\r\n */\r\n getCache(): object {\r\n return this.browserStorage;\r\n }\r\n\r\n /**\r\n * interface compat, we cannot overwrite browser cache; Functionality is supported by individual entities in browser\r\n */\r\n setCache(): void {\r\n // sets nothing\r\n }\r\n\r\n /**\r\n * Prepend msal.<client-id> to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema)\r\n * @param key\r\n * @param addInstanceId\r\n */\r\n generateCacheKey(key: string): string {\r\n const generatedKey = this.validateAndParseJson(key);\r\n if (!generatedKey) {\r\n if (StringUtils.startsWith(key, Constants.CACHE_PREFIX) || StringUtils.startsWith(key, PersistentCacheKeys.ADAL_ID_TOKEN)) {\r\n return key;\r\n }\r\n return `${Constants.CACHE_PREFIX}.${this.clientId}.${key}`;\r\n }\r\n\r\n return JSON.stringify(key);\r\n }\r\n\r\n /**\r\n * Create authorityKey to cache authority\r\n * @param state\r\n */\r\n generateAuthorityKey(stateString: string): string {\r\n const {\r\n libraryState: {\r\n id: stateId\r\n }\r\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\r\n\r\n return this.generateCacheKey(`${TemporaryCacheKeys.AUTHORITY}.${stateId}`);\r\n }\r\n\r\n /**\r\n * Create Nonce key to cache nonce\r\n * @param state\r\n */\r\n generateNonceKey(stateString: string): string {\r\n const {\r\n libraryState: {\r\n id: stateId\r\n }\r\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\r\n\r\n return this.generateCacheKey(`${TemporaryCacheKeys.NONCE_IDTOKEN}.${stateId}`);\r\n }\r\n\r\n /**\r\n * Creates full cache key for the request state\r\n * @param stateString State string for the request\r\n */\r\n generateStateKey(stateString: string): string {\r\n // Use the library state id to key temp storage for uniqueness for multiple concurrent requests\r\n const {\r\n libraryState: {\r\n id: stateId\r\n }\r\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\r\n return this.generateCacheKey(`${TemporaryCacheKeys.REQUEST_STATE}.${stateId}`);\r\n }\r\n\r\n /**\r\n * Gets the cached authority based on the cached state. Returns empty if no cached state found.\r\n */\r\n getCachedAuthority(cachedState: string): string | null {\r\n const stateCacheKey = this.generateStateKey(cachedState);\r\n const state = this.getTemporaryCache(stateCacheKey);\r\n if (!state) {\r\n return null;\r\n }\r\n\r\n const authorityCacheKey = this.generateAuthorityKey(state);\r\n return this.getTemporaryCache(authorityCacheKey);\r\n }\r\n\r\n /**\r\n * Updates account, authority, and state in cache\r\n * @param serverAuthenticationRequest\r\n * @param account\r\n */\r\n updateCacheEntries(state: string, nonce: string, authorityInstance: string, loginHint: string, account: AccountInfo | null): void {\r\n this.logger.trace(\"BrowserCacheManager.updateCacheEntries called\");\r\n // Cache the request state\r\n const stateCacheKey = this.generateStateKey(state);\r\n this.setTemporaryCache(stateCacheKey, state, false);\r\n\r\n // Cache the nonce\r\n const nonceCacheKey = this.generateNonceKey(state);\r\n this.setTemporaryCache(nonceCacheKey, nonce, false);\r\n\r\n // Cache authorityKey\r\n const authorityCacheKey = this.generateAuthorityKey(state);\r\n this.setTemporaryCache(authorityCacheKey, authorityInstance, false);\r\n\r\n if (account) {\r\n const ccsCredential: CcsCredential = {\r\n credential: account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\r\n } else if (!StringUtils.isEmpty(loginHint)) {\r\n const ccsCredential: CcsCredential = {\r\n credential: loginHint,\r\n type: CcsCredentialType.UPN\r\n };\r\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\r\n }\r\n }\r\n\r\n /**\r\n * Reset all temporary cache items\r\n * @param state\r\n */\r\n resetRequestCache(state: string): void {\r\n this.logger.trace(\"BrowserCacheManager.resetRequestCache called\");\r\n // check state and remove associated cache items\r\n if (!StringUtils.isEmpty(state)) {\r\n this.getKeys().forEach(key => {\r\n if (key.indexOf(state) !== -1) {\r\n this.removeItem(key);\r\n }\r\n });\r\n }\r\n\r\n // delete generic interactive request parameters\r\n if (state) {\r\n this.removeItem(this.generateStateKey(state));\r\n this.removeItem(this.generateNonceKey(state));\r\n this.removeItem(this.generateAuthorityKey(state));\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.ORIGIN_URI));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.URL_HASH));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CORRELATION_ID));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CCS_CREDENTIAL));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\r\n this.setInteractionInProgress(false);\r\n }\r\n\r\n /**\r\n * Removes temporary cache for the provided state\r\n * @param stateString\r\n */\r\n cleanRequestByState(stateString: string): void {\r\n this.logger.trace(\"BrowserCacheManager.cleanRequestByState called\");\r\n // Interaction is completed - remove interaction status.\r\n if (stateString) {\r\n const stateKey = this.generateStateKey(stateString);\r\n const cachedState = this.temporaryCacheStorage.getItem(stateKey);\r\n this.logger.infoPii(`BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: ${cachedState}`);\r\n this.resetRequestCache(cachedState || Constants.EMPTY_STRING);\r\n }\r\n this.clearMsalCookies();\r\n }\r\n\r\n /**\r\n * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state\r\n * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button.\r\n * @param interactionType\r\n */\r\n cleanRequestByInteractionType(interactionType: InteractionType): void {\r\n this.logger.trace(\"BrowserCacheManager.cleanRequestByInteractionType called\");\r\n // Loop through all keys to find state key\r\n this.getKeys().forEach((key) => {\r\n // If this key is not the state key, move on\r\n if (key.indexOf(TemporaryCacheKeys.REQUEST_STATE) === -1) {\r\n return;\r\n }\r\n\r\n // Retrieve state value, return if not a valid value\r\n const stateValue = this.temporaryCacheStorage.getItem(key);\r\n if (!stateValue) {\r\n return;\r\n }\r\n // Extract state and ensure it matches given InteractionType, then clean request cache\r\n const parsedState = BrowserProtocolUtils.extractBrowserRequestState(this.cryptoImpl, stateValue);\r\n if (parsedState && parsedState.interactionType === interactionType) {\r\n this.logger.infoPii(`BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: ${stateValue}`);\r\n this.resetRequestCache(stateValue);\r\n }\r\n });\r\n this.clearMsalCookies();\r\n this.setInteractionInProgress(false);\r\n }\r\n\r\n cacheCodeRequest(authCodeRequest: CommonAuthorizationCodeRequest, browserCrypto: ICrypto): void {\r\n this.logger.trace(\"BrowserCacheManager.cacheCodeRequest called\");\r\n\r\n const encodedValue = browserCrypto.base64Encode(JSON.stringify(authCodeRequest));\r\n this.setTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, encodedValue, true);\r\n }\r\n\r\n /**\r\n * Gets the token exchange parameters from the cache. Throws an error if nothing is found.\r\n */\r\n getCachedRequest(state: string, browserCrypto: ICrypto): CommonAuthorizationCodeRequest {\r\n this.logger.trace(\"BrowserCacheManager.getCachedRequest called\");\r\n // Get token request from cache and parse as TokenExchangeParameters.\r\n const encodedTokenRequest = this.getTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, true);\r\n if (!encodedTokenRequest) {\r\n throw BrowserAuthError.createNoTokenRequestCacheError();\r\n }\r\n\r\n const parsedRequest = this.validateAndParseJson(browserCrypto.base64Decode(encodedTokenRequest)) as CommonAuthorizationCodeRequest;\r\n if (!parsedRequest) {\r\n throw BrowserAuthError.createUnableToParseTokenRequestCacheError();\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n\r\n // Get cached authority and use if no authority is cached with request.\r\n if (StringUtils.isEmpty(parsedRequest.authority)) {\r\n const authorityCacheKey: string = this.generateAuthorityKey(state);\r\n const cachedAuthority = this.getTemporaryCache(authorityCacheKey);\r\n if (!cachedAuthority) {\r\n throw BrowserAuthError.createNoCachedAuthorityError();\r\n }\r\n parsedRequest.authority = cachedAuthority;\r\n }\r\n\r\n return parsedRequest;\r\n }\r\n\r\n /**\r\n * Gets cached native request for redirect flows\r\n */\r\n getCachedNativeRequest(): NativeTokenRequest | null {\r\n this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest called\");\r\n const cachedRequest = this.getTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, true);\r\n if (!cachedRequest) {\r\n this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest: No cached native request found\");\r\n return null;\r\n }\r\n\r\n const parsedRequest = this.validateAndParseJson(cachedRequest) as NativeTokenRequest;\r\n if (!parsedRequest) {\r\n this.logger.error(\"BrowserCacheManager.getCachedNativeRequest: Unable to parse native request\");\r\n return null;\r\n }\r\n\r\n return parsedRequest;\r\n }\r\n\r\n isInteractionInProgress(matchClientId?: boolean): boolean {\r\n const clientId = this.getInteractionInProgress();\r\n\r\n if (matchClientId) {\r\n return clientId === this.clientId;\r\n } else {\r\n return !!clientId;\r\n }\r\n }\r\n\r\n getInteractionInProgress(): string | null {\r\n const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`;\r\n return this.getTemporaryCache(key, false);\r\n }\r\n\r\n setInteractionInProgress(inProgress: boolean): void {\r\n // Ensure we don't overwrite interaction in progress for a different clientId\r\n const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`;\r\n if (inProgress) {\r\n if (this.getInteractionInProgress()) {\r\n throw BrowserAuthError.createInteractionInProgressError();\r\n } else {\r\n // No interaction is in progress\r\n this.setTemporaryCache(key, this.clientId, false);\r\n }\r\n } else if (!inProgress && this.getInteractionInProgress() === this.clientId) {\r\n this.removeItem(key);\r\n }\r\n }\r\n\r\n /**\r\n * Returns username retrieved from ADAL or MSAL v1 idToken\r\n */\r\n getLegacyLoginHint(): string | null {\r\n // Only check for adal/msal token if no SSO params are being used\r\n const adalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n if (adalIdTokenString) {\r\n this.browserStorage.removeItem(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n this.logger.verbose(\"Cached ADAL id token retrieved.\");\r\n }\r\n\r\n // Check for cached MSAL v1 id token\r\n const msalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ID_TOKEN, true);\r\n if (msalIdTokenString) {\r\n this.removeItem(this.generateCacheKey(PersistentCacheKeys.ID_TOKEN));\r\n this.logger.verbose(\"Cached MSAL.js v1 id token retrieved\");\r\n }\r\n\r\n const cachedIdTokenString = msalIdTokenString || adalIdTokenString;\r\n if (cachedIdTokenString) {\r\n const cachedIdToken = new IdToken(cachedIdTokenString, this.cryptoImpl);\r\n if (cachedIdToken.claims && cachedIdToken.claims.preferred_username) {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 preferred_username as loginHint\");\r\n return cachedIdToken.claims.preferred_username;\r\n }\r\n else if (cachedIdToken.claims && cachedIdToken.claims.upn) {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 upn as loginHint\");\r\n return cachedIdToken.claims.upn;\r\n }\r\n else {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, however, no account hint claim found. Enable preferred_username or upn id token claim to get SSO.\");\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Updates a credential's cache key if the current cache key is outdated\r\n */\r\n updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string {\r\n const updatedCacheKey = credential.generateCredentialKey();\r\n\r\n if (currentCacheKey !== updatedCacheKey) {\r\n const cacheItem = this.getItem(currentCacheKey);\r\n if (cacheItem) {\r\n this.removeItem(currentCacheKey);\r\n this.setItem(updatedCacheKey, cacheItem);\r\n this.logger.verbose(`Updated an outdated ${credential.credentialType} cache key`);\r\n return updatedCacheKey;\r\n } else {\r\n this.logger.error(`Attempted to update an outdated ${credential.credentialType} cache key but no item matching the outdated key was found in storage`);\r\n }\r\n }\r\n\r\n return currentCacheKey;\r\n }\r\n\r\n /**\r\n * Returns application id as redirect context during AcquireTokenRedirect flow.\r\n */\r\n getRedirectRequestContext(): string | null {\r\n return this.getTemporaryCache(TemporaryCacheKeys.REDIRECT_CONTEXT, true);\r\n }\r\n\r\n /**\r\n * Sets application id as the redirect context during AcquireTokenRedirect flow.\r\n * @param value\r\n */\r\n setRedirectRequestContext(value: string): void {\r\n this.setTemporaryCache(TemporaryCacheKeys.REDIRECT_CONTEXT, value, true);\r\n }\r\n}\r\n\r\nexport const DEFAULT_BROWSER_CACHE_MANAGER = (clientId: string, logger: Logger): BrowserCacheManager => {\r\n const cacheOptions: Required<CacheOptions> = {\r\n cacheLocation: BrowserCacheLocation.MemoryStorage,\r\n temporaryCacheLocation: BrowserCacheLocation.MemoryStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false,\r\n cacheMigrationEnabled: false,\r\n claimsBasedCachingEnabled: true\r\n };\r\n return new BrowserCacheManager(clientId, cacheOptions, DEFAULT_CRYPTO_IMPLEMENTATION, logger);\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { DEFAULT_CRYPTO_IMPLEMENTATION, ICrypto } from \"../crypto/ICrypto\";\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { ILoggerCallback, Logger, LogLevel } from \"../logger/Logger\";\r\nimport { Constants } from \"../utils/Constants\";\r\nimport { version } from \"../packageMetadata\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { AzureCloudInstance } from \"../authority/AuthorityOptions\";\r\nimport { CacheManager, DefaultStorageClass } from \"../cache/CacheManager\";\r\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\r\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin\";\r\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache\";\r\nimport { ClientCredentials } from \"../account/ClientCredentials\";\r\n\r\n// Token renewal offset default in seconds\r\nconst DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\r\n\r\n/**\r\n * Use the configuration object to configure MSAL Modules and initialize the base interfaces for MSAL.\r\n *\r\n * This object allows you to configure important elements of MSAL functionality:\r\n * - authOptions - Authentication for application\r\n * - cryptoInterface - Implementation of crypto functions\r\n * - libraryInfo - Library metadata\r\n * - telemetry - Telemetry options and data\r\n * - loggerOptions - Logging for application\r\n * - cacheOptions - Cache options for application\r\n * - networkInterface - Network implementation\r\n * - storageInterface - Storage implementation\r\n * - systemOptions - Additional library options\r\n * - clientCredentials - Credentials options for confidential clients\r\n */\r\nexport type ClientConfiguration = {\r\n authOptions: AuthOptions,\r\n systemOptions?: SystemOptions,\r\n loggerOptions?: LoggerOptions,\r\n cacheOptions?: CacheOptions,\r\n storageInterface?: CacheManager,\r\n networkInterface?: INetworkModule,\r\n cryptoInterface?: ICrypto,\r\n clientCredentials?: ClientCredentials,\r\n libraryInfo?: LibraryInfo\r\n telemetry?: TelemetryOptions,\r\n serverTelemetryManager?: ServerTelemetryManager | null,\r\n persistencePlugin?: ICachePlugin | null,\r\n serializableCache?: ISerializableTokenCache | null, \r\n};\r\n\r\nexport type CommonClientConfiguration = {\r\n authOptions: Required<AuthOptions>,\r\n systemOptions: Required<SystemOptions>,\r\n loggerOptions : Required<LoggerOptions>,\r\n cacheOptions: Required<CacheOptions>,\r\n storageInterface: CacheManager,\r\n networkInterface : INetworkModule,\r\n cryptoInterface : Required<ICrypto>,\r\n libraryInfo : LibraryInfo,\r\n telemetry: Required<TelemetryOptions>,\r\n serverTelemetryManager: ServerTelemetryManager | null,\r\n clientCredentials: ClientCredentials,\r\n persistencePlugin: ICachePlugin | null,\r\n serializableCache: ISerializableTokenCache | null, \r\n};\r\n\r\n/**\r\n * Use this to configure the auth options in the ClientConfiguration object\r\n *\r\n * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform\r\n * - authority - You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\r\n * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios.\r\n * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios.\r\n * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\r\n * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\r\n * - skipAuthorityMetadataCache - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false.\r\n */\r\nexport type AuthOptions = {\r\n clientId: string;\r\n authority: Authority;\r\n clientCapabilities?: Array<string>;\r\n azureCloudOptions?: AzureCloudOptions;\r\n skipAuthorityMetadataCache?: boolean;\r\n};\r\n\r\n/**\r\n * Use this to configure token renewal info in the Configuration object\r\n *\r\n * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry\r\n */\r\nexport type SystemOptions = {\r\n tokenRenewalOffsetSeconds?: number;\r\n preventCorsPreflight?: boolean;\r\n};\r\n\r\n/**\r\n * Use this to configure the logging that MSAL does, by configuring logger options in the Configuration object\r\n *\r\n * - loggerCallback - Callback for logger\r\n * - piiLoggingEnabled - Sets whether pii logging is enabled\r\n * - logLevel - Sets the level at which logging happens\r\n * - correlationId - Sets the correlationId printed by the logger\r\n */\r\nexport type LoggerOptions = {\r\n loggerCallback?: ILoggerCallback,\r\n piiLoggingEnabled?: boolean,\r\n logLevel?: LogLevel,\r\n correlationId?: string\r\n};\r\n\r\n/**\r\n * Use this to configure credential cache preferences in the ClientConfiguration object\r\n *\r\n * - claimsBasedCachingEnabled - Sets whether tokens should be cached based on the claims hash. Default is true.\r\n */\r\nexport type CacheOptions = {\r\n claimsBasedCachingEnabled?: boolean;\r\n};\r\n\r\n/**\r\n * Library-specific options\r\n */\r\nexport type LibraryInfo = {\r\n sku: string,\r\n version: string,\r\n cpu: string,\r\n os: string\r\n};\r\n\r\n/**\r\n * AzureCloudInstance specific options\r\n *\r\n * - azureCloudInstance - string enum providing short notation for soverign and public cloud authorities\r\n * - tenant - provision to provide the tenant info\r\n */\r\nexport type AzureCloudOptions = {\r\n azureCloudInstance: AzureCloudInstance;\r\n tenant?: string,\r\n};\r\n\r\nexport type TelemetryOptions = {\r\n application: ApplicationTelemetry;\r\n};\r\n\r\n/**\r\n * Telemetry information sent on request\r\n * - appName: Unique string name of an application\r\n * - appVersion: Version of the application using MSAL\r\n */\r\nexport type ApplicationTelemetry = {\r\n appName: string;\r\n appVersion: string;\r\n};\r\n\r\nexport const DEFAULT_SYSTEM_OPTIONS: Required<SystemOptions> = {\r\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\r\n preventCorsPreflight: false\r\n};\r\n\r\nconst DEFAULT_LOGGER_IMPLEMENTATION: Required<LoggerOptions> = {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info,\r\n correlationId: Constants.EMPTY_STRING\r\n};\r\n\r\nconst DEFAULT_CACHE_OPTIONS: Required<CacheOptions> = {\r\n claimsBasedCachingEnabled: true\r\n};\r\n\r\nconst DEFAULT_NETWORK_IMPLEMENTATION: INetworkModule = {\r\n async sendGetRequestAsync<T>(): Promise<T> {\r\n const notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async sendPostRequestAsync<T>(): Promise<T> {\r\n const notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n};\r\n\r\nconst DEFAULT_LIBRARY_INFO: LibraryInfo = {\r\n sku: Constants.SKU,\r\n version: version,\r\n cpu: Constants.EMPTY_STRING,\r\n os: Constants.EMPTY_STRING\r\n};\r\n\r\nconst DEFAULT_CLIENT_CREDENTIALS: ClientCredentials = {\r\n clientSecret: Constants.EMPTY_STRING,\r\n clientAssertion: undefined\r\n};\r\n\r\nconst DEFAULT_AZURE_CLOUD_OPTIONS: AzureCloudOptions = {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: `${Constants.DEFAULT_COMMON_TENANT}`\r\n};\r\n\r\nconst DEFAULT_TELEMETRY_OPTIONS: Required<TelemetryOptions> = {\r\n application: {\r\n appName: \"\",\r\n appVersion: \"\"\r\n }\r\n};\r\n\r\n/**\r\n * Function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param Configuration\r\n *\r\n * @returns Configuration\r\n */\r\nexport function buildClientConfiguration(\r\n {\r\n authOptions: userAuthOptions,\r\n systemOptions: userSystemOptions,\r\n loggerOptions: userLoggerOption,\r\n cacheOptions: userCacheOptions,\r\n storageInterface: storageImplementation,\r\n networkInterface: networkImplementation,\r\n cryptoInterface: cryptoImplementation,\r\n clientCredentials: clientCredentials,\r\n libraryInfo: libraryInfo,\r\n telemetry: telemetry,\r\n serverTelemetryManager: serverTelemetryManager,\r\n persistencePlugin: persistencePlugin,\r\n serializableCache: serializableCache, \r\n }: ClientConfiguration): CommonClientConfiguration {\r\n\r\n const loggerOptions = { ...DEFAULT_LOGGER_IMPLEMENTATION, ...userLoggerOption };\r\n\r\n return {\r\n authOptions: buildAuthOptions(userAuthOptions),\r\n systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions },\r\n loggerOptions: loggerOptions,\r\n cacheOptions: {...DEFAULT_CACHE_OPTIONS, ...userCacheOptions },\r\n storageInterface: storageImplementation || new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions)),\r\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\r\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\r\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\r\n libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },\r\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },\r\n serverTelemetryManager: serverTelemetryManager || null,\r\n persistencePlugin: persistencePlugin || null,\r\n serializableCache: serializableCache || null, \r\n };\r\n}\r\n\r\n/**\r\n * Construct authoptions from the client and platform passed values\r\n * @param authOptions\r\n */\r\nfunction buildAuthOptions(authOptions: AuthOptions): Required<AuthOptions> {\r\n return {\r\n clientCapabilities: [],\r\n azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS,\r\n skipAuthorityMetadataCache: false,\r\n ...authOptions\r\n };\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { NetworkResponse } from \"./NetworkManager\";\r\n\r\n/**\r\n * Options allowed by network request APIs.\r\n */\r\nexport type NetworkRequestOptions = {\r\n headers?: Record<string, string>,\r\n body?: string;\r\n};\r\n\r\n/**\r\n * Client network interface to send backend requests.\r\n * @interface\r\n */\r\nexport interface INetworkModule {\r\n\r\n /**\r\n * Interface function for async network \"GET\" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/\r\n * @param url\r\n * @param requestParams\r\n * @param enableCaching\r\n */\r\n sendGetRequestAsync<T>(url: string, options?: NetworkRequestOptions, cancellationToken?: number): Promise<NetworkResponse<T>>;\r\n\r\n /**\r\n * Interface function for async network \"POST\" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/\r\n * @param url\r\n * @param requestParams\r\n * @param enableCaching\r\n */\r\n sendPostRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>>;\r\n}\r\n\r\nexport const StubbedNetworkModule: INetworkModule = {\r\n sendGetRequestAsync: () => {\r\n const notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented for the Network interface.\";\r\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\r\n },\r\n sendPostRequestAsync: () => {\r\n const notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented for the Network interface.\";\r\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\r\n }\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants, INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\r\n\r\n/**\r\n * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\r\n */\r\nexport class FetchClient implements INetworkModule {\r\n\r\n /**\r\n * Fetch Client for REST endpoints - Get request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendGetRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\r\n let response;\r\n try {\r\n response = await fetch(url, {\r\n method: HTTP_REQUEST_TYPE.GET,\r\n headers: this.getFetchHeaders(options)\r\n });\r\n } catch (e) {\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createGetRequestFailedError(e, url);\r\n } else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n }\r\n\r\n try {\r\n return {\r\n headers: this.getHeaderDict(response.headers),\r\n body: await response.json() as T,\r\n status: response.status\r\n };\r\n } catch (e) {\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n }\r\n }\r\n\r\n /**\r\n * Fetch Client for REST endpoints - Post request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendPostRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\r\n const reqBody = (options && options.body) || Constants.EMPTY_STRING;\r\n\r\n let response;\r\n try {\r\n response = await fetch(url, {\r\n method: HTTP_REQUEST_TYPE.POST,\r\n headers: this.getFetchHeaders(options),\r\n body: reqBody\r\n });\r\n } catch (e) {\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createPostRequestFailedError(e, url);\r\n } else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n }\r\n\r\n try {\r\n return {\r\n headers: this.getHeaderDict(response.headers),\r\n body: await response.json() as T,\r\n status: response.status\r\n };\r\n } catch (e) {\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n }\r\n }\r\n\r\n /**\r\n * Get Fetch API Headers object from string map\r\n * @param inputHeaders \r\n */\r\n private getFetchHeaders(options?: NetworkRequestOptions): Headers {\r\n const headers = new Headers();\r\n if (!(options && options.headers)) {\r\n return headers;\r\n }\r\n const optionsHeaders = options.headers;\r\n Object.keys(optionsHeaders).forEach((key) => {\r\n headers.append(key, optionsHeaders[key]);\r\n });\r\n return headers;\r\n }\r\n\r\n private getHeaderDict(headers: Headers): Record<string, string> {\r\n const headerDict: Record<string, string> = {};\r\n headers.forEach((value: string, key: string) => {\r\n headerDict[key] = value;\r\n });\r\n return headerDict;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\r\n\r\n/**\r\n * This client implements the XMLHttpRequest class to send GET and POST requests.\r\n */\r\nexport class XhrClient implements INetworkModule {\r\n\r\n /**\r\n * XhrClient for REST endpoints - Get request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendGetRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\r\n return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.GET, options);\r\n }\r\n\r\n /**\r\n * XhrClient for REST endpoints - Post request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendPostRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\r\n return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.POST, options);\r\n }\r\n\r\n /**\r\n * Helper for XhrClient requests.\r\n * @param url \r\n * @param method \r\n * @param options \r\n */\r\n private sendRequestAsync<T>(url: string, method: HTTP_REQUEST_TYPE, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\r\n return new Promise<NetworkResponse<T>>((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(method, url, /* async: */ true);\r\n this.setXhrHeaders(xhr, options);\r\n xhr.onload = (): void => {\r\n if (xhr.status < 200 || xhr.status >= 300) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n } else {\r\n reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n }\r\n }\r\n try {\r\n const jsonResponse = JSON.parse(xhr.responseText) as T;\r\n const networkResponse: NetworkResponse<T> = {\r\n headers: this.getHeaderDict(xhr),\r\n body: jsonResponse,\r\n status: xhr.status\r\n };\r\n resolve(networkResponse);\r\n } catch (e) {\r\n reject(BrowserAuthError.createFailedToParseNetworkResponseError(url));\r\n }\r\n };\r\n\r\n xhr.onerror = (): void => {\r\n if (window.navigator.onLine) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n } else {\r\n reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n }\r\n } else {\r\n reject(BrowserAuthError.createNoNetworkConnectivityError());\r\n }\r\n };\r\n\r\n if (method === HTTP_REQUEST_TYPE.POST && options && options.body) {\r\n xhr.send(options.body);\r\n } else if (method === HTTP_REQUEST_TYPE.GET) {\r\n xhr.send();\r\n } else {\r\n throw BrowserAuthError.createHttpMethodNotImplementedError(method);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Helper to set XHR headers for request.\r\n * @param xhr \r\n * @param options \r\n */\r\n private setXhrHeaders(xhr: XMLHttpRequest, options?: NetworkRequestOptions): void {\r\n if (options && options.headers) {\r\n const headers = options.headers;\r\n Object.keys(headers).forEach((key: string) => {\r\n xhr.setRequestHeader(key, headers[key]);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets a string map of the headers received in the response.\r\n * \r\n * Algorithm comes from https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders\r\n * @param xhr \r\n */\r\n private getHeaderDict(xhr: XMLHttpRequest): Record<string, string> {\r\n const headerString = xhr.getAllResponseHeaders();\r\n const headerArr = headerString.trim().split(/[\\r\\n]+/);\r\n const headerDict: Record<string, string> = {};\r\n headerArr.forEach((value: string) => {\r\n const parts = value.split(\": \");\r\n const headerName = parts.shift();\r\n const headerVal = parts.join(\": \");\r\n if (headerName && headerVal) {\r\n headerDict[headerName] = headerVal;\r\n }\r\n });\r\n\r\n return headerDict;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants, INetworkModule, UrlString } from \"@azure/msal-common\";\r\nimport { FetchClient } from \"../network/FetchClient\";\r\nimport { XhrClient } from \"../network/XhrClient\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { InteractionType, BrowserConstants } from \"./BrowserConstants\";\r\n\r\n/**\r\n * Utility class for browser specific functions\r\n */\r\nexport class BrowserUtils {\r\n\r\n // #region Window Navigation and URL management\r\n\r\n /**\r\n * Clears hash from window url.\r\n */\r\n static clearHash(contentWindow: Window): void {\r\n // Office.js sets history.replaceState to null\r\n contentWindow.location.hash = Constants.EMPTY_STRING;\r\n if (typeof contentWindow.history.replaceState === \"function\") {\r\n // Full removes \"#\" from url\r\n contentWindow.history.replaceState(null, Constants.EMPTY_STRING, `${contentWindow.location.origin}${contentWindow.location.pathname}${contentWindow.location.search}`);\r\n }\r\n }\r\n\r\n /**\r\n * Replaces current hash with hash from provided url\r\n */\r\n static replaceHash(url: string): void {\r\n const urlParts = url.split(\"#\");\r\n urlParts.shift(); // Remove part before the hash\r\n window.location.hash = urlParts.length > 0 ? urlParts.join(\"#\") : Constants.EMPTY_STRING;\r\n }\r\n\r\n /**\r\n * Returns boolean of whether the current window is in an iframe or not.\r\n */\r\n static isInIframe(): boolean {\r\n return window.parent !== window;\r\n }\r\n\r\n /**\r\n * Returns boolean of whether or not the current window is a popup opened by msal\r\n */\r\n static isInPopup(): boolean {\r\n return typeof window !== \"undefined\" && !!window.opener && \r\n window.opener !== window && \r\n typeof window.name === \"string\" && \r\n window.name.indexOf(`${BrowserConstants.POPUP_NAME_PREFIX}.`) === 0;\r\n }\r\n\r\n // #endregion\r\n\r\n /**\r\n * Returns current window URL as redirect uri\r\n */\r\n static getCurrentUri(): string {\r\n return window.location.href.split(\"?\")[0].split(\"#\")[0];\r\n }\r\n\r\n /**\r\n * Gets the homepage url for the current window location.\r\n */\r\n static getHomepage(): string {\r\n const currentUrl = new UrlString(window.location.href);\r\n const urlComponents = currentUrl.getUrlComponents();\r\n return `${urlComponents.Protocol}//${urlComponents.HostNameAndPort}/`;\r\n }\r\n\r\n /**\r\n * Returns best compatible network client object. \r\n */\r\n static getBrowserNetworkClient(): INetworkModule {\r\n if (window.fetch && window.Headers) {\r\n return new FetchClient();\r\n } else {\r\n return new XhrClient();\r\n }\r\n }\r\n\r\n /**\r\n * Throws error if we have completed an auth and are \r\n * attempting another auth request inside an iframe.\r\n */\r\n static blockReloadInHiddenIframes(): void {\r\n const isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash);\r\n // return an error if called from the hidden iframe created by the msal js silent calls\r\n if (isResponseHash && BrowserUtils.isInIframe()) {\r\n throw BrowserAuthError.createBlockReloadInHiddenIframeError();\r\n }\r\n }\r\n\r\n /**\r\n * Block redirect operations in iframes unless explicitly allowed\r\n * @param interactionType Interaction type for the request\r\n * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe\r\n */\r\n static blockRedirectInIframe(interactionType: InteractionType, allowRedirectInIframe: boolean): void {\r\n const isIframedApp = BrowserUtils.isInIframe();\r\n if (interactionType === InteractionType.Redirect && isIframedApp && !allowRedirectInIframe) {\r\n // If we are not in top frame, we shouldn't redirect. This is also handled by the service.\r\n throw BrowserAuthError.createRedirectInIframeError(isIframedApp);\r\n }\r\n }\r\n\r\n /**\r\n * Block redirectUri loaded in popup from calling AcquireToken APIs\r\n */\r\n static blockAcquireTokenInPopups(): void {\r\n // Popups opened by msal popup APIs are given a name that starts with \"msal.\"\r\n if (BrowserUtils.isInPopup()) {\r\n throw BrowserAuthError.createBlockAcquireTokenInPopupsError();\r\n }\r\n }\r\n\r\n /**\r\n * Throws error if token requests are made in non-browser environment\r\n * @param isBrowserEnvironment Flag indicating if environment is a browser.\r\n */\r\n static blockNonBrowserEnvironment(isBrowserEnvironment: boolean): void {\r\n if (!isBrowserEnvironment) {\r\n throw BrowserAuthError.createNonBrowserEnvironmentError();\r\n }\r\n }\r\n\r\n /**\r\n * Throws error if native brokering is enabled but initialize hasn't been called\r\n * @param allowNativeBroker \r\n * @param initialized \r\n */\r\n static blockNativeBrokerCalledBeforeInitialized(allowNativeBroker: boolean, initialized: boolean): void {\r\n if (allowNativeBroker && !initialized) {\r\n throw BrowserAuthError.createNativeBrokerCalledBeforeInitialize();\r\n }\r\n }\r\n\r\n /**\r\n * Returns boolean of whether current browser is an Internet Explorer or Edge browser.\r\n */\r\n static detectIEOrEdge(): boolean {\r\n const ua = window.navigator.userAgent;\r\n const msie = ua.indexOf(\"MSIE \");\r\n const msie11 = ua.indexOf(\"Trident/\");\r\n const msedge = ua.indexOf(\"Edge/\");\r\n const isIE = msie > 0 || msie11 > 0;\r\n const isEdge = msedge > 0;\r\n return isIE || isEdge;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INavigationClient } from \"./INavigationClient\";\r\nimport { NavigationOptions } from \"./NavigationOptions\";\r\n\r\nexport class NavigationClient implements INavigationClient {\r\n /**\r\n * Navigates to other pages within the same web application\r\n * @param url \r\n * @param options \r\n */\r\n navigateInternal(url: string, options: NavigationOptions): Promise<boolean>{\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n }\r\n\r\n /**\r\n * Navigates to other pages outside the web application i.e. the Identity Provider\r\n * @param url \r\n * @param options \r\n */\r\n navigateExternal(url: string, options: NavigationOptions): Promise<boolean> {\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n }\r\n\r\n /**\r\n * Default navigation implementation invoked by the internal and external functions\r\n * @param url \r\n * @param options \r\n */\r\n private static defaultNavigateWindow(url: string, options: NavigationOptions): Promise<boolean> {\r\n if (options.noHistory) {\r\n window.location.replace(url);\r\n } else {\r\n window.location.assign(url);\r\n }\r\n\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(true);\r\n }, options.timeout);\r\n });\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { SystemOptions, LoggerOptions, INetworkModule, DEFAULT_SYSTEM_OPTIONS, Constants, ProtocolMode, LogLevel, StubbedNetworkModule, AzureCloudInstance, AzureCloudOptions, ApplicationTelemetry } from \"@azure/msal-common\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\nimport { BrowserCacheLocation, BrowserConstants } from \"../utils/BrowserConstants\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { NavigationClient } from \"../navigation/NavigationClient\";\r\n\r\n// Default timeout for popup windows and iframes in milliseconds\r\nexport const DEFAULT_POPUP_TIMEOUT_MS = 60000;\r\nexport const DEFAULT_IFRAME_TIMEOUT_MS = 6000;\r\nexport const DEFAULT_REDIRECT_TIMEOUT_MS = 30000;\r\nexport const DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS = 2000;\r\n\r\n/**\r\n * Use this to configure the auth options in the Configuration object\r\n */\r\nexport type BrowserAuthOptions = {\r\n /**\r\n * Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform\r\n */\r\n clientId: string;\r\n /**\r\n * You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\r\n */\r\n authority?: string;\r\n /**\r\n * An array of URIs that are known to be valid. Used in B2C scenarios.\r\n */\r\n knownAuthorities?: Array<string>;\r\n /**\r\n * A string containing the cloud discovery response. Used in AAD scenarios.\r\n */\r\n cloudDiscoveryMetadata?: string;\r\n /**\r\n * A string containing the .well-known/openid-configuration endpoint response\r\n */\r\n authorityMetadata?: string;\r\n /**\r\n * The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal.\r\n */\r\n redirectUri?: string;\r\n /**\r\n * The redirect URI where the window navigates after a successful logout.\r\n */\r\n postLogoutRedirectUri?: string | null;\r\n /**\r\n * Boolean indicating whether to navigate to the original request URL after the auth server navigates to the redirect URL.\r\n */\r\n navigateToLoginRequestUrl?: boolean;\r\n /**\r\n * Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\r\n */\r\n clientCapabilities?: Array<string>;\r\n /**\r\n * Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\r\n */\r\n protocolMode?: ProtocolMode;\r\n /**\r\n * Enum that represents the Azure Cloud to use.\r\n */\r\n azureCloudOptions?: AzureCloudOptions;\r\n /**\r\n * Flag of whether to use the local metadata cache\r\n */\r\n skipAuthorityMetadataCache?: boolean;\r\n};\r\n\r\n/**\r\n * Use this to configure the below cache configuration options:\r\n */\r\nexport type CacheOptions = {\r\n /**\r\n * Used to specify the cacheLocation user wants to set. Valid values are \"localStorage\", \"sessionStorage\" and \"memoryStorage\".\r\n */\r\n cacheLocation?: BrowserCacheLocation | string;\r\n /**\r\n * Used to specify the temporaryCacheLocation user wants to set. Valid values are \"localStorage\", \"sessionStorage\" and \"memoryStorage\".\r\n */\r\n temporaryCacheLocation?: BrowserCacheLocation | string;\r\n /**\r\n * If set, MSAL stores the auth request state required for validation of the auth flows in the browser cookies. By default this flag is set to false.\r\n */\r\n storeAuthStateInCookie?: boolean;\r\n /**\r\n * If set, MSAL sets the \"Secure\" flag on cookies so they can only be sent over HTTPS. By default this flag is set to false.\r\n */\r\n secureCookies?: boolean;\r\n /**\r\n * If set, MSAL will attempt to migrate cache entries from older versions on initialization. By default this flag is set to true if cacheLocation is localStorage, otherwise false.\r\n */\r\n cacheMigrationEnabled?: boolean;\r\n /**\r\n * Flag that determines whether access tokens are stored based on requested claims\r\n */\r\n claimsBasedCachingEnabled?: boolean;\r\n};\r\n\r\nexport type BrowserSystemOptions = SystemOptions & {\r\n /**\r\n * Used to initialize the Logger object (See ClientConfiguration.ts)\r\n */\r\n loggerOptions?: LoggerOptions;\r\n /**\r\n * Network interface implementation\r\n */\r\n networkClient?: INetworkModule;\r\n /**\r\n * Override the methods used to navigate to other webpages. Particularly useful if you are using a client-side router\r\n */\r\n navigationClient?: INavigationClient;\r\n /**\r\n * Sets the timeout for waiting for a response hash in a popup. Will take precedence over loadFrameTimeout if both are set.\r\n */\r\n windowHashTimeout?: number;\r\n /**\r\n * Sets the timeout for waiting for a response hash in an iframe. Will take precedence over loadFrameTimeout if both are set.\r\n */\r\n iframeHashTimeout?: number;\r\n /**\r\n * Sets the timeout for waiting for a response hash in an iframe or popup\r\n */\r\n loadFrameTimeout?: number;\r\n /**\r\n * Maximum time the library should wait for a frame to load\r\n */\r\n navigateFrameWait?: number;\r\n /**\r\n * Time to wait for redirection to occur before resolving promise\r\n */\r\n redirectNavigationTimeout?: number;\r\n /**\r\n * Sets whether popups are opened asynchronously. By default, this flag is set to false. When set to false, blank popups are opened before anything else happens. When set to true, popups are opened when making the network request.\r\n */\r\n asyncPopups?: boolean;\r\n /**\r\n * Flag to enable redirect opertaions when the app is rendered in an iframe (to support scenarios such as embedded B2C login).\r\n */\r\n allowRedirectInIframe?: boolean;\r\n /**\r\n * Flag to enable native broker support (e.g. acquiring tokens from WAM on Windows)\r\n */\r\n allowNativeBroker?: boolean;\r\n /**\r\n * Sets the timeout for waiting for the native broker handshake to resolve\r\n */\r\n nativeBrokerHandshakeTimeout?: number;\r\n /**\r\n * Options related to browser crypto APIs\r\n */\r\n cryptoOptions?: CryptoOptions;\r\n /**\r\n * Sets the interval length in milliseconds for polling the location attribute in popup windows (default is 30ms)\r\n */\r\n pollIntervalMilliseconds?: number;\r\n};\r\n\r\nexport type CryptoOptions = {\r\n\r\n /**\r\n * Enables the application to use the MSR Crypto interface, if available (and other interfaces are not)\r\n * @type {?boolean}\r\n */\r\n useMsrCrypto?: boolean;\r\n\r\n /**\r\n * Entropy to seed browser crypto API (needed for MSR Crypto). Must be cryptographically strong random numbers (e.g. crypto.randomBytes(48) from Node)\r\n * @type {?Uint8Array}\r\n */\r\n entropy?: Uint8Array;\r\n};\r\n\r\n/**\r\n * Telemetry Options\r\n */\r\nexport type BrowserTelemetryOptions = {\r\n /**\r\n * Telemetry information sent on request\r\n * - appName: Unique string name of an application\r\n * - appVersion: Version of the application using MSAL\r\n */\r\n application?: ApplicationTelemetry;\r\n};\r\n\r\n/**\r\n * This object allows you to configure important elements of MSAL functionality and is passed into the constructor of PublicClientApplication\r\n */\r\nexport type Configuration = {\r\n /**\r\n * This is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform\r\n */\r\n auth: BrowserAuthOptions,\r\n /**\r\n * This is where you configure cache location and whether to store cache in cookies\r\n */\r\n cache?: CacheOptions,\r\n /**\r\n * This is where you can configure the network client, logger, token renewal offset\r\n */\r\n system?: BrowserSystemOptions,\r\n /**\r\n * This is where you can configure telemetry data and options\r\n */\r\n telemetry?: BrowserTelemetryOptions\r\n};\r\n\r\nexport type BrowserConfiguration = {\r\n auth: Required<BrowserAuthOptions>,\r\n cache: Required<CacheOptions>,\r\n system: Required<BrowserSystemOptions>,\r\n telemetry: Required<BrowserTelemetryOptions>\r\n};\r\n\r\n/**\r\n * MSAL function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param auth\r\n * @param cache\r\n * @param system\r\n *\r\n * @returns Configuration object\r\n */\r\nexport function buildConfiguration({ auth: userInputAuth, cache: userInputCache, system: userInputSystem, telemetry: userInputTelemetry }: Configuration, isBrowserEnvironment: boolean): BrowserConfiguration {\r\n\r\n // Default auth options for browser\r\n const DEFAULT_AUTH_OPTIONS: Required<BrowserAuthOptions> = {\r\n clientId: Constants.EMPTY_STRING,\r\n authority: `${Constants.DEFAULT_AUTHORITY}`,\r\n knownAuthorities: [],\r\n cloudDiscoveryMetadata: Constants.EMPTY_STRING,\r\n authorityMetadata: Constants.EMPTY_STRING,\r\n redirectUri: Constants.EMPTY_STRING,\r\n postLogoutRedirectUri: Constants.EMPTY_STRING,\r\n navigateToLoginRequestUrl: true,\r\n clientCapabilities: [],\r\n protocolMode: ProtocolMode.AAD,\r\n azureCloudOptions: {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: Constants.EMPTY_STRING\r\n },\r\n skipAuthorityMetadataCache: false, \r\n };\r\n\r\n // Default cache options for browser\r\n const DEFAULT_CACHE_OPTIONS: Required<CacheOptions> = {\r\n cacheLocation: BrowserCacheLocation.SessionStorage,\r\n temporaryCacheLocation: BrowserCacheLocation.SessionStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false,\r\n // Default cache migration to true if cache location is localStorage since entries are preserved across tabs/windows. Migration has little to no benefit in sessionStorage and memoryStorage\r\n cacheMigrationEnabled: userInputCache && userInputCache.cacheLocation === BrowserCacheLocation.LocalStorage ? true : false,\r\n claimsBasedCachingEnabled: true\r\n };\r\n\r\n // Default logger options for browser\r\n const DEFAULT_LOGGER_OPTIONS: LoggerOptions = {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n loggerCallback: (): void => {\r\n // allow users to not set logger call back \r\n },\r\n logLevel: LogLevel.Info,\r\n piiLoggingEnabled: false\r\n };\r\n\r\n // Default system options for browser\r\n const DEFAULT_BROWSER_SYSTEM_OPTIONS: Required<BrowserSystemOptions> = {\r\n ...DEFAULT_SYSTEM_OPTIONS,\r\n loggerOptions: DEFAULT_LOGGER_OPTIONS,\r\n networkClient: isBrowserEnvironment ? BrowserUtils.getBrowserNetworkClient() : StubbedNetworkModule,\r\n navigationClient: new NavigationClient(),\r\n loadFrameTimeout: 0,\r\n // If loadFrameTimeout is provided, use that as default.\r\n windowHashTimeout: userInputSystem?.loadFrameTimeout || DEFAULT_POPUP_TIMEOUT_MS,\r\n iframeHashTimeout: userInputSystem?.loadFrameTimeout || DEFAULT_IFRAME_TIMEOUT_MS,\r\n navigateFrameWait: isBrowserEnvironment && BrowserUtils.detectIEOrEdge() ? 500 : 0,\r\n redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS,\r\n asyncPopups: false,\r\n allowRedirectInIframe: false,\r\n allowNativeBroker: false,\r\n nativeBrokerHandshakeTimeout: userInputSystem?.nativeBrokerHandshakeTimeout || DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS,\r\n pollIntervalMilliseconds: BrowserConstants.DEFAULT_POLL_INTERVAL_MS,\r\n cryptoOptions: {\r\n useMsrCrypto: false,\r\n entropy: undefined\r\n }\r\n };\r\n\r\n const providedSystemOptions: BrowserSystemOptions = {\r\n ...userInputSystem,\r\n loggerOptions: userInputSystem?.loggerOptions || DEFAULT_LOGGER_OPTIONS\r\n };\r\n\r\n const DEFAULT_TELEMETRY_OPTIONS: Required<BrowserTelemetryOptions> = {\r\n application: {\r\n appName: Constants.EMPTY_STRING,\r\n appVersion: Constants.EMPTY_STRING\r\n }\r\n };\r\n\r\n const overlayedConfig: BrowserConfiguration = {\r\n auth: { ...DEFAULT_AUTH_OPTIONS, ...userInputAuth },\r\n cache: { ...DEFAULT_CACHE_OPTIONS, ...userInputCache },\r\n system: { ...DEFAULT_BROWSER_SYSTEM_OPTIONS, ...providedSystemOptions },\r\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...userInputTelemetry }\r\n };\r\n return overlayedConfig;\r\n}\r\n\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ICrypto, SignedHttpRequestParameters } from \"./ICrypto\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { UrlString } from \"../url/UrlString\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\r\n\r\n/**\r\n * See eSTS docs for more info.\r\n * - A kid element, with the value containing an RFC 7638-compliant JWK thumbprint that is base64 encoded.\r\n * - xms_ksl element, representing the storage location of the key's secret component on the client device. One of two values:\r\n * - sw: software storage\r\n * - uhw: hardware storage\r\n */\r\ntype ReqCnf = {\r\n kid: string;\r\n xms_ksl: KeyLocation;\r\n};\r\n\r\nexport type ReqCnfData = {\r\n kid: string;\r\n reqCnfString: string;\r\n reqCnfHash: string;\r\n};\r\n\r\nenum KeyLocation {\r\n SW = \"sw\",\r\n UHW = \"uhw\"\r\n}\r\n\r\nexport class PopTokenGenerator {\r\n\r\n private cryptoUtils: ICrypto;\r\n private performanceClient?: IPerformanceClient;\r\n\r\n constructor(cryptoUtils: ICrypto, performanceClient?: IPerformanceClient) {\r\n this.cryptoUtils = cryptoUtils;\r\n this.performanceClient = performanceClient;\r\n }\r\n\r\n /**\r\n * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\r\n * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\r\n * @param request\r\n * @returns\r\n */\r\n async generateCnf(request: SignedHttpRequestParameters): Promise<ReqCnfData> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.PopTokenGenerateKid, request.correlationId);\r\n const reqCnf = await this.generateKid(request);\r\n const reqCnfString: string = this.cryptoUtils.base64Encode(JSON.stringify(reqCnf));\r\n\r\n return {\r\n kid: reqCnf.kid,\r\n reqCnfString, \r\n reqCnfHash: await this.cryptoUtils.hashString(reqCnfString) \r\n };\r\n }\r\n\r\n /**\r\n * Generates key_id for a SHR token request\r\n * @param request\r\n * @returns\r\n */\r\n async generateKid(request: SignedHttpRequestParameters): Promise<ReqCnf> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId);\r\n\r\n const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request);\r\n\r\n return {\r\n kid: kidThumbprint,\r\n xms_ksl: KeyLocation.SW\r\n };\r\n }\r\n\r\n /**\r\n * Signs the POP access_token with the local generated key-pair\r\n * @param accessToken\r\n * @param request\r\n * @returns\r\n */\r\n async signPopToken(accessToken: string, keyId: string, request: SignedHttpRequestParameters): Promise<string> {\r\n return this.signPayload(accessToken, keyId, request);\r\n }\r\n\r\n /**\r\n * Utility function to generate the signed JWT for an access_token\r\n * @param payload\r\n * @param kid\r\n * @param request\r\n * @param claims\r\n * @returns\r\n */\r\n async signPayload(payload: string, keyId: string, request: SignedHttpRequestParameters, claims?: object): Promise<string> {\r\n\r\n // Deconstruct request to extract SHR parameters\r\n const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce } = request;\r\n\r\n const resourceUrlString = (resourceRequestUri) ? new UrlString(resourceRequestUri) : undefined;\r\n const resourceUrlComponents = resourceUrlString?.getUrlComponents();\r\n return await this.cryptoUtils.signJwt({\r\n at: payload,\r\n ts: TimeUtils.nowSeconds(),\r\n m: resourceRequestMethod?.toUpperCase(),\r\n u: resourceUrlComponents?.HostNameAndPort,\r\n nonce: shrNonce || this.cryptoUtils.createNewGuid(),\r\n p: resourceUrlComponents?.AbsolutePath,\r\n q: (resourceUrlComponents?.QueryString) ? [[], resourceUrlComponents.QueryString] : undefined,\r\n client_claims: shrClaims || undefined,\r\n ...claims\r\n }, keyId, request.correlationId);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ICrypto, Logger, AccountEntity, CacheManager } from \"@azure/msal-common\";\r\nimport { InteractionType } from \"../utils/BrowserConstants\";\r\nimport { EventCallbackFunction, EventError, EventMessage, EventPayload } from \"./EventMessage\";\r\nimport { EventType } from \"./EventType\";\r\n\r\nexport class EventHandler {\r\n // Callback for subscribing to events\r\n private eventCallbacks: Map<string, EventCallbackFunction>;\r\n private logger: Logger;\r\n private browserCrypto: ICrypto;\r\n private listeningToStorageEvents: boolean;\r\n\r\n constructor(logger: Logger, browserCrypto: ICrypto) {\r\n this.eventCallbacks = new Map();\r\n this.logger = logger;\r\n this.browserCrypto = browserCrypto;\r\n this.listeningToStorageEvents = false;\r\n this.handleAccountCacheChange = this.handleAccountCacheChange.bind(this);\r\n }\r\n\r\n /**\r\n * Adds event callbacks to array\r\n * @param callback\r\n */\r\n addEventCallback(callback: EventCallbackFunction): string | null {\r\n if (typeof window !== \"undefined\") {\r\n const callbackId = this.browserCrypto.createNewGuid();\r\n this.eventCallbacks.set(callbackId, callback);\r\n this.logger.verbose(`Event callback registered with id: ${callbackId}`);\r\n \r\n return callbackId;\r\n }\r\n \r\n return null;\r\n }\r\n\r\n /**\r\n * Removes callback with provided id from callback array\r\n * @param callbackId\r\n */\r\n removeEventCallback(callbackId: string): void {\r\n this.eventCallbacks.delete(callbackId);\r\n this.logger.verbose(`Event callback ${callbackId} removed.`);\r\n }\r\n\r\n /**\r\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n enableAccountStorageEvents(): void {\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n\r\n if (!this.listeningToStorageEvents) {\r\n this.logger.verbose(\"Adding account storage listener.\");\r\n this.listeningToStorageEvents = true;\r\n window.addEventListener(\"storage\", this.handleAccountCacheChange);\r\n } else {\r\n this.logger.verbose(\"Account storage listener already registered.\");\r\n }\r\n }\r\n\r\n /**\r\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n disableAccountStorageEvents(): void {\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n\r\n if (this.listeningToStorageEvents) {\r\n this.logger.verbose(\"Removing account storage listener.\");\r\n window.removeEventListener(\"storage\", this.handleAccountCacheChange);\r\n this.listeningToStorageEvents = false;\r\n } else {\r\n this.logger.verbose(\"No account storage listener registered.\");\r\n }\r\n }\r\n\r\n /**\r\n * Emits events by calling callback with event message\r\n * @param eventType\r\n * @param interactionType\r\n * @param payload\r\n * @param error\r\n */\r\n emitEvent(eventType: EventType, interactionType?: InteractionType, payload?: EventPayload, error?: EventError): void {\r\n if (typeof window !== \"undefined\") {\r\n const message: EventMessage = {\r\n eventType: eventType,\r\n interactionType: interactionType || null,\r\n payload: payload || null,\r\n error: error || null,\r\n timestamp: Date.now()\r\n };\r\n\r\n this.logger.info(`Emitting event: ${eventType}`);\r\n\r\n this.eventCallbacks.forEach((callback: EventCallbackFunction, callbackId: string) => {\r\n this.logger.verbose(`Emitting event to callback ${callbackId}: ${eventType}`);\r\n callback.apply(null, [message]);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Emit account added/removed events when cached accounts are changed in a different tab or frame\r\n */\r\n private handleAccountCacheChange(e: StorageEvent): void {\r\n try {\r\n const cacheValue = e.newValue || e.oldValue;\r\n if (!cacheValue) {\r\n return;\r\n }\r\n const parsedValue = JSON.parse(cacheValue);\r\n if (typeof parsedValue !== \"object\" || !AccountEntity.isAccountEntity(parsedValue)) {\r\n return;\r\n }\r\n const accountEntity = CacheManager.toObject<AccountEntity>(new AccountEntity(), parsedValue);\r\n const accountInfo = accountEntity.getAccountInfo();\r\n if (!e.oldValue && e.newValue) {\r\n this.logger.info(\"Account was added to cache in a different window\");\r\n this.emitEvent(EventType.ACCOUNT_ADDED, undefined, accountInfo);\r\n } else if (!e.newValue && e.oldValue) {\r\n this.logger.info(\"Account was removed from cache in a different window\");\r\n this.emitEvent(EventType.ACCOUNT_REMOVED, undefined, accountInfo);\r\n }\r\n } catch (e) {\r\n return;\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { NetworkResponse } from \"./NetworkManager\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { HeaderNames, ThrottlingConstants, Constants } from \"../utils/Constants\";\r\nimport { CacheManager } from \"../cache/CacheManager\";\r\nimport { ServerError } from \"../error/ServerError\";\r\nimport { RequestThumbprint } from \"./RequestThumbprint\";\r\nimport { ThrottlingEntity } from \"../cache/entities/ThrottlingEntity\";\r\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\r\n\r\nexport class ThrottlingUtils {\r\n\r\n /**\r\n * Prepares a RequestThumbprint to be stored as a key.\r\n * @param thumbprint\r\n */\r\n static generateThrottlingStorageKey(thumbprint: RequestThumbprint): string {\r\n return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`;\r\n }\r\n\r\n /**\r\n * Performs necessary throttling checks before a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n */\r\n static preProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint): void {\r\n const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\r\n const value = cacheManager.getThrottlingCache(key);\r\n\r\n if (value) {\r\n if (value.throttleTime < Date.now()) {\r\n cacheManager.removeItem(key);\r\n return;\r\n }\r\n throw new ServerError(value.errorCodes?.join(\" \") || Constants.EMPTY_STRING, value.errorMessage, value.subError);\r\n }\r\n }\r\n\r\n /**\r\n * Performs necessary throttling checks after a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n * @param response\r\n */\r\n static postProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint, response: NetworkResponse<ServerAuthorizationTokenResponse>): void {\r\n if (ThrottlingUtils.checkResponseStatus(response) || ThrottlingUtils.checkResponseForRetryAfter(response)) {\r\n const thumbprintValue: ThrottlingEntity = {\r\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\r\n error: response.body.error,\r\n errorCodes: response.body.error_codes,\r\n errorMessage: response.body.error_description,\r\n subError: response.body.suberror\r\n };\r\n cacheManager.setThrottlingCache(\r\n ThrottlingUtils.generateThrottlingStorageKey(thumbprint),\r\n thumbprintValue\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Checks a NetworkResponse object's status codes against 429 or 5xx\r\n * @param response\r\n */\r\n static checkResponseStatus(response: NetworkResponse<ServerAuthorizationTokenResponse>): boolean {\r\n return response.status === 429 || response.status >= 500 && response.status < 600;\r\n }\r\n\r\n /**\r\n * Checks a NetworkResponse object's RetryAfter header\r\n * @param response\r\n */\r\n static checkResponseForRetryAfter(response: NetworkResponse<ServerAuthorizationTokenResponse>): boolean {\r\n if (response.headers) {\r\n return response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && (response.status < 200 || response.status >= 300);\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\r\n * @param throttleTime\r\n */\r\n static calculateThrottleTime(throttleTime: number): number {\r\n const time = throttleTime <= 0 ? 0 : throttleTime;\r\n\r\n const currentSeconds = Date.now() / 1000;\r\n return Math.floor(Math.min(\r\n currentSeconds + (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS),\r\n currentSeconds + ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS\r\n ) * 1000);\r\n }\r\n\r\n static removeThrottle(cacheManager: CacheManager, clientId: string, request: BaseAuthRequest, homeAccountIdentifier?: string): void {\r\n const thumbprint: RequestThumbprint = {\r\n clientId: clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: homeAccountIdentifier,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n\r\n const key = this.generateThrottlingStorageKey(thumbprint);\r\n cacheManager.removeItem(key);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule, NetworkRequestOptions } from \"./INetworkModule\";\r\nimport { RequestThumbprint } from \"./RequestThumbprint\";\r\nimport { ThrottlingUtils } from \"./ThrottlingUtils\";\r\nimport { CacheManager } from \"../cache/CacheManager\";\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\n\r\nexport type NetworkResponse<T> = {\r\n headers: Record<string, string>;\r\n body: T;\r\n status: number;\r\n};\r\n\r\nexport type UrlToHttpRequestOptions = {\r\n protocol: string;\r\n hostname: string;\r\n hash: string;\r\n search: string;\r\n pathname: string;\r\n path: string;\r\n href: string;\r\n port?: number;\r\n auth?: string;\r\n};\r\n\r\nexport class NetworkManager {\r\n private networkClient: INetworkModule;\r\n private cacheManager: CacheManager;\r\n\r\n constructor(networkClient: INetworkModule, cacheManager: CacheManager) {\r\n this.networkClient = networkClient;\r\n this.cacheManager = cacheManager;\r\n }\r\n\r\n /**\r\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\r\n * @param thumbprint\r\n * @param tokenEndpoint\r\n * @param options\r\n */\r\n async sendPostRequest<T>(thumbprint: RequestThumbprint, tokenEndpoint: string, options: NetworkRequestOptions): Promise<NetworkResponse<T>> {\r\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint);\r\n\r\n let response;\r\n try {\r\n response = await this.networkClient.sendPostRequestAsync<T>(tokenEndpoint, options);\r\n } catch (e) {\r\n if (e instanceof AuthError) {\r\n throw e;\r\n } else {\r\n throw ClientAuthError.createNetworkError(tokenEndpoint, e);\r\n }\r\n }\r\n\r\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response);\r\n\r\n return response;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { PromptValue, CodeChallengeMethodValues} from \"../utils/Constants\";\r\nimport { StringDict } from \"../utils/MsalTypes\";\r\n\r\n/**\r\n * Validates server consumable params from the \"request\" objects\r\n */\r\nexport class RequestValidator {\r\n\r\n /**\r\n * Utility to check if the `redirectUri` in the request is a non-null value\r\n * @param redirectUri\r\n */\r\n static validateRedirectUri(redirectUri: string) : void {\r\n if (StringUtils.isEmpty(redirectUri)) {\r\n throw ClientConfigurationError.createRedirectUriEmptyError();\r\n }\r\n }\r\n\r\n /**\r\n * Utility to validate prompt sent by the user in the request\r\n * @param prompt\r\n */\r\n static validatePrompt(prompt: string) : void {\r\n const promptValues = [];\r\n\r\n for (const value in PromptValue) {\r\n promptValues.push(PromptValue[value]);\r\n }\r\n\r\n if (promptValues.indexOf(prompt) < 0) {\r\n throw ClientConfigurationError.createInvalidPromptError(prompt);\r\n }\r\n }\r\n\r\n static validateClaims(claims: string) : void {\r\n try {\r\n JSON.parse(claims);\r\n } catch(e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n }\r\n\r\n /**\r\n * Utility to validate code_challenge and code_challenge_method\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n static validateCodeChallengeParams(codeChallenge: string, codeChallengeMethod: string) : void {\r\n if (StringUtils.isEmpty(codeChallenge) || StringUtils.isEmpty(codeChallengeMethod)) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n } else {\r\n this.validateCodeChallengeMethod(codeChallengeMethod);\r\n }\r\n }\r\n\r\n /**\r\n * Utility to validate code_challenge_method\r\n * @param codeChallengeMethod\r\n */\r\n static validateCodeChallengeMethod(codeChallengeMethod: string) : void {\r\n if (\r\n [\r\n CodeChallengeMethodValues.PLAIN,\r\n CodeChallengeMethodValues.S256\r\n ].indexOf(codeChallengeMethod) < 0\r\n ) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeMethodError();\r\n }\r\n }\r\n\r\n /**\r\n * Removes unnecessary, duplicate, and empty string query parameters from extraQueryParameters\r\n * @param request\r\n */\r\n static sanitizeEQParams(eQParams: StringDict, queryParams: Map<string, string>) : StringDict {\r\n if (!eQParams) {\r\n return {};\r\n }\r\n\r\n // Remove any query parameters already included in SSO params\r\n queryParams.forEach((value, key) => {\r\n if (eQParams[key]) {\r\n delete eQParams[key];\r\n }\r\n });\r\n\r\n // remove empty string parameters\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n return Object.fromEntries(Object.entries(eQParams).filter(([key, value]) => value !== \"\"));\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AADServerParamKeys, Constants, ResponseMode, SSOTypes, CLIENT_INFO, AuthenticationScheme, ClaimsRequestKeys, PasswordGrantConstants, OIDC_DEFAULT_SCOPES, ThrottlingConstants, HeaderNames} from \"../utils/Constants\";\r\nimport { ScopeSet } from \"./ScopeSet\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { StringDict } from \"../utils/MsalTypes\";\r\nimport { RequestValidator } from \"./RequestValidator\";\r\nimport { ApplicationTelemetry, LibraryInfo } from \"../config/ClientConfiguration\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\r\nimport { ClientInfo } from \"../account/ClientInfo\";\r\n\r\nexport class RequestParameterBuilder {\r\n\r\n private parameters: Map<string, string>;\r\n\r\n constructor() {\r\n this.parameters = new Map<string, string>();\r\n }\r\n\r\n /**\r\n * add response_type = code\r\n */\r\n addResponseTypeCode(): void {\r\n this.parameters.set(\r\n AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE)\r\n );\r\n }\r\n\r\n /**\r\n * add response_type = token id_token\r\n */\r\n addResponseTypeForTokenAndIdToken(): void {\r\n this.parameters.set(\r\n AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(`${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`)\r\n );\r\n }\r\n\r\n /**\r\n * add response_mode. defaults to query.\r\n * @param responseMode\r\n */\r\n addResponseMode(responseMode?: ResponseMode): void {\r\n this.parameters.set(\r\n AADServerParamKeys.RESPONSE_MODE,\r\n encodeURIComponent((responseMode) ? responseMode : ResponseMode.QUERY)\r\n );\r\n }\r\n\r\n /**\r\n * Add flag to indicate STS should attempt to use WAM if available\r\n */\r\n addNativeBroker(): void {\r\n this.parameters.set(\r\n AADServerParamKeys.NATIVE_BROKER,\r\n encodeURIComponent(\"1\")\r\n );\r\n }\r\n\r\n /**\r\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\r\n * @param scopeSet\r\n * @param addOidcScopes\r\n */\r\n addScopes(scopes: string[], addOidcScopes: boolean = true): void {\r\n const requestScopes = addOidcScopes ? [...scopes || [], ...OIDC_DEFAULT_SCOPES] : scopes || [];\r\n const scopeSet = new ScopeSet(requestScopes);\r\n this.parameters.set(AADServerParamKeys.SCOPE, encodeURIComponent(scopeSet.printScopes()));\r\n }\r\n\r\n /**\r\n * add clientId\r\n * @param clientId\r\n */\r\n addClientId(clientId: string): void {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ID, encodeURIComponent(clientId));\r\n }\r\n\r\n /**\r\n * add redirect_uri\r\n * @param redirectUri\r\n */\r\n addRedirectUri(redirectUri: string): void {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.REDIRECT_URI, encodeURIComponent(redirectUri));\r\n }\r\n\r\n /**\r\n * add post logout redirectUri\r\n * @param redirectUri\r\n */\r\n addPostLogoutRedirectUri(redirectUri: string): void {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.POST_LOGOUT_URI, encodeURIComponent(redirectUri));\r\n }\r\n\r\n /**\r\n * add id_token_hint to logout request\r\n * @param idTokenHint\r\n */\r\n addIdTokenHint(idTokenHint: string): void {\r\n this.parameters.set(AADServerParamKeys.ID_TOKEN_HINT, encodeURIComponent(idTokenHint));\r\n }\r\n\r\n /**\r\n * add domain_hint\r\n * @param domainHint\r\n */\r\n addDomainHint(domainHint: string): void {\r\n this.parameters.set(SSOTypes.DOMAIN_HINT, encodeURIComponent(domainHint));\r\n }\r\n\r\n /**\r\n * add login_hint\r\n * @param loginHint\r\n */\r\n addLoginHint(loginHint: string): void {\r\n this.parameters.set(SSOTypes.LOGIN_HINT, encodeURIComponent(loginHint));\r\n }\r\n\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for login_hint\r\n * @param loginHint\r\n */\r\n addCcsUpn(loginHint: string): void {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`));\r\n }\r\n\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for account object\r\n * @param loginHint\r\n */\r\n addCcsOid(clientInfo: ClientInfo): void {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`));\r\n }\r\n\r\n /**\r\n * add sid\r\n * @param sid\r\n */\r\n addSid(sid: string): void {\r\n this.parameters.set(SSOTypes.SID, encodeURIComponent(sid));\r\n }\r\n\r\n /**\r\n * add claims\r\n * @param claims\r\n */\r\n addClaims(claims?: string, clientCapabilities?: Array<string>): void {\r\n const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);\r\n RequestValidator.validateClaims(mergedClaims);\r\n this.parameters.set(AADServerParamKeys.CLAIMS, encodeURIComponent(mergedClaims));\r\n }\r\n\r\n /**\r\n * add correlationId\r\n * @param correlationId\r\n */\r\n addCorrelationId(correlationId: string): void {\r\n this.parameters.set(AADServerParamKeys.CLIENT_REQUEST_ID, encodeURIComponent(correlationId));\r\n }\r\n\r\n /**\r\n * add library info query params\r\n * @param libraryInfo\r\n */\r\n addLibraryInfo(libraryInfo: LibraryInfo): void {\r\n // Telemetry Info\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_SKU, libraryInfo.sku);\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_VER, libraryInfo.version);\r\n if (libraryInfo.os) {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_OS, libraryInfo.os);\r\n }\r\n if (libraryInfo.cpu) {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_CPU, libraryInfo.cpu);\r\n }\r\n }\r\n\r\n /**\r\n * Add client telemetry parameters\r\n * @param appTelemetry\r\n */\r\n addApplicationTelemetry(appTelemetry: ApplicationTelemetry): void {\r\n if (appTelemetry?.appName) {\r\n this.parameters.set(AADServerParamKeys.X_APP_NAME, appTelemetry.appName);\r\n }\r\n\r\n if (appTelemetry?.appVersion) {\r\n this.parameters.set(AADServerParamKeys.X_APP_VER, appTelemetry.appVersion);\r\n }\r\n }\r\n\r\n /**\r\n * add prompt\r\n * @param prompt\r\n */\r\n addPrompt(prompt: string): void {\r\n RequestValidator.validatePrompt(prompt);\r\n this.parameters.set(`${AADServerParamKeys.PROMPT}`, encodeURIComponent(prompt));\r\n }\r\n\r\n /**\r\n * add state\r\n * @param state\r\n */\r\n addState(state: string): void {\r\n if (!StringUtils.isEmpty(state)) {\r\n this.parameters.set(AADServerParamKeys.STATE, encodeURIComponent(state));\r\n }\r\n }\r\n\r\n /**\r\n * add nonce\r\n * @param nonce\r\n */\r\n addNonce(nonce: string): void {\r\n this.parameters.set(AADServerParamKeys.NONCE, encodeURIComponent(nonce));\r\n }\r\n\r\n /**\r\n * add code_challenge and code_challenge_method\r\n * - throw if either of them are not passed\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n addCodeChallengeParams(\r\n codeChallenge: string,\r\n codeChallengeMethod: string\r\n ): void {\r\n RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);\r\n if (codeChallenge && codeChallengeMethod) {\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE, encodeURIComponent(codeChallenge));\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));\r\n } else {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n }\r\n }\r\n\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n addAuthorizationCode(code: string): void {\r\n this.parameters.set(AADServerParamKeys.CODE, encodeURIComponent(code));\r\n }\r\n\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n addDeviceCode(code: string): void {\r\n this.parameters.set(AADServerParamKeys.DEVICE_CODE, encodeURIComponent(code));\r\n }\r\n\r\n /**\r\n * add the `refreshToken` passed by the user\r\n * @param refreshToken\r\n */\r\n addRefreshToken(refreshToken: string): void {\r\n this.parameters.set(AADServerParamKeys.REFRESH_TOKEN, encodeURIComponent(refreshToken));\r\n }\r\n\r\n /**\r\n * add the `code_verifier` passed by the user to exchange for a token\r\n * @param codeVerifier\r\n */\r\n addCodeVerifier(codeVerifier: string): void {\r\n this.parameters.set(AADServerParamKeys.CODE_VERIFIER, encodeURIComponent(codeVerifier));\r\n }\r\n\r\n /**\r\n * add client_secret\r\n * @param clientSecret\r\n */\r\n addClientSecret(clientSecret: string): void {\r\n this.parameters.set(AADServerParamKeys.CLIENT_SECRET, encodeURIComponent(clientSecret));\r\n }\r\n\r\n /**\r\n * add clientAssertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n addClientAssertion(clientAssertion: string): void {\r\n if (!StringUtils.isEmpty(clientAssertion)) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION, encodeURIComponent(clientAssertion));\r\n }\r\n }\r\n\r\n /**\r\n * add clientAssertionType for confidential client flows\r\n * @param clientAssertionType\r\n */\r\n addClientAssertionType(clientAssertionType: string): void {\r\n if (!StringUtils.isEmpty(clientAssertionType)) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));\r\n }\r\n }\r\n\r\n /**\r\n * add OBO assertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n addOboAssertion(oboAssertion: string): void {\r\n this.parameters.set(AADServerParamKeys.OBO_ASSERTION, encodeURIComponent(oboAssertion));\r\n }\r\n\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n addRequestTokenUse(tokenUse: string): void {\r\n this.parameters.set(AADServerParamKeys.REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));\r\n }\r\n\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n addGrantType(grantType: string): void {\r\n this.parameters.set(AADServerParamKeys.GRANT_TYPE, encodeURIComponent(grantType));\r\n }\r\n\r\n /**\r\n * add client info\r\n *\r\n */\r\n addClientInfo(): void {\r\n this.parameters.set(CLIENT_INFO, \"1\");\r\n }\r\n\r\n /**\r\n * add extraQueryParams\r\n * @param eQParams\r\n */\r\n addExtraQueryParameters(eQParams: StringDict): void {\r\n const sanitizedEQParams = RequestValidator.sanitizeEQParams(eQParams, this.parameters);\r\n Object.keys(sanitizedEQParams).forEach((key) => {\r\n this.parameters.set(key, eQParams[key]);\r\n });\r\n }\r\n\r\n addClientCapabilitiesToClaims(claims?: string, clientCapabilities?: Array<string>): string {\r\n let mergedClaims: object;\r\n\r\n // Parse provided claims into JSON object or initialize empty object\r\n if (!claims) {\r\n mergedClaims = {};\r\n } else {\r\n try {\r\n mergedClaims = JSON.parse(claims);\r\n } catch(e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n }\r\n\r\n if (clientCapabilities && clientCapabilities.length > 0) {\r\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)){\r\n // Add access_token key to claims object\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\r\n }\r\n\r\n // Add xms_cc claim with provided clientCapabilities to access_token key\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {\r\n values: clientCapabilities\r\n };\r\n }\r\n\r\n return JSON.stringify(mergedClaims);\r\n }\r\n\r\n /**\r\n * adds `username` for Password Grant flow\r\n * @param username\r\n */\r\n addUsername(username: string): void {\r\n this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username));\r\n }\r\n\r\n /**\r\n * adds `password` for Password Grant flow\r\n * @param password\r\n */\r\n addPassword(password: string): void {\r\n this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password));\r\n }\r\n\r\n /**\r\n * add pop_jwk to query params\r\n * @param cnfString\r\n */\r\n addPopToken(cnfString: string): void {\r\n if (!StringUtils.isEmpty(cnfString)) {\r\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.POP);\r\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(cnfString));\r\n }\r\n }\r\n\r\n /**\r\n * add SSH JWK and key ID to query params\r\n */\r\n addSshJwk(sshJwkString: string): void {\r\n if(!StringUtils.isEmpty(sshJwkString)) {\r\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.SSH);\r\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(sshJwkString));\r\n }\r\n }\r\n\r\n /**\r\n * add server telemetry fields\r\n * @param serverTelemetryManager\r\n */\r\n addServerTelemetry(serverTelemetryManager: ServerTelemetryManager): void {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\r\n }\r\n\r\n /**\r\n * Adds parameter that indicates to the server that throttling is supported\r\n */\r\n addThrottling(): void {\r\n this.parameters.set(AADServerParamKeys.X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\r\n }\r\n\r\n /**\r\n * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\r\n */\r\n addLogoutHint(logoutHint: string): void {\r\n this.parameters.set(AADServerParamKeys.LOGOUT_HINT, encodeURIComponent(logoutHint));\r\n }\r\n\r\n /**\r\n * Utility to create a URL from the params map\r\n */\r\n createQueryString(): string {\r\n const queryParameterArray: Array<string> = new Array<string>();\r\n\r\n this.parameters.forEach((value, key) => {\r\n queryParameterArray.push(`${key}=${value}`);\r\n });\r\n\r\n return queryParameterArray.join(\"&\");\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientConfiguration, buildClientConfiguration, CommonClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { NetworkManager, NetworkResponse } from \"../network/NetworkManager\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { Logger } from \"../logger/Logger\";\r\nimport { Constants, HeaderNames } from \"../utils/Constants\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { CacheManager } from \"../cache/CacheManager\";\r\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\r\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\r\nimport { version, name } from \"../packageMetadata\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { CcsCredential, CcsCredentialType } from \"../account/CcsCredential\";\r\nimport { buildClientInfoFromHomeAccountId } from \"../account/ClientInfo\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\r\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\r\n\r\n/**\r\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\r\n */\r\nexport abstract class BaseClient {\r\n // Logger object\r\n public logger: Logger;\r\n\r\n // Application config\r\n protected config: CommonClientConfiguration;\r\n\r\n // Crypto Interface\r\n protected cryptoUtils: ICrypto;\r\n\r\n // Storage Interface\r\n protected cacheManager: CacheManager;\r\n\r\n // Network Interface\r\n protected networkClient: INetworkModule;\r\n\r\n // Server Telemetry Manager\r\n protected serverTelemetryManager: ServerTelemetryManager | null;\r\n\r\n // Network Manager\r\n protected networkManager: NetworkManager;\r\n\r\n // Default authority object\r\n public authority: Authority;\r\n\r\n // Performance telemetry client\r\n protected performanceClient?: IPerformanceClient;\r\n\r\n protected constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient) {\r\n // Set the configuration\r\n this.config = buildClientConfiguration(configuration);\r\n\r\n // Initialize the logger\r\n this.logger = new Logger(this.config.loggerOptions, name, version);\r\n\r\n // Initialize crypto\r\n this.cryptoUtils = this.config.cryptoInterface;\r\n\r\n // Initialize storage interface\r\n this.cacheManager = this.config.storageInterface;\r\n\r\n // Set the network interface\r\n this.networkClient = this.config.networkInterface;\r\n\r\n // Set the NetworkManager\r\n this.networkManager = new NetworkManager(this.networkClient, this.cacheManager);\r\n\r\n // Set TelemetryManager\r\n this.serverTelemetryManager = this.config.serverTelemetryManager;\r\n\r\n // set Authority\r\n this.authority = this.config.authOptions.authority;\r\n\r\n // set performance telemetry client\r\n this.performanceClient = performanceClient;\r\n }\r\n\r\n /**\r\n * Creates default headers for requests to token endpoint\r\n */\r\n protected createTokenRequestHeaders(ccsCred?: CcsCredential): Record<string, string> { \r\n const headers: Record<string, string> = {};\r\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\r\n if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`;\r\n } catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`;\r\n break;\r\n }\r\n } \r\n return headers;\r\n }\r\n\r\n /**\r\n * Http post to token endpoint\r\n * @param tokenEndpoint\r\n * @param queryString\r\n * @param headers\r\n * @param thumbprint\r\n */\r\n protected async executePostToTokenEndpoint(tokenEndpoint: string, queryString: string, headers: Record<string, string>, thumbprint: RequestThumbprint): Promise<NetworkResponse<ServerAuthorizationTokenResponse>> {\r\n const response = await this.networkManager.sendPostRequest<ServerAuthorizationTokenResponse>(\r\n thumbprint,\r\n tokenEndpoint,\r\n { body: queryString, headers: headers }\r\n );\r\n\r\n if (this.config.serverTelemetryManager && response.status < 500 && response.status !== 429) {\r\n // Telemetry data successfully logged by server, clear Telemetry cache\r\n this.config.serverTelemetryManager.clearTelemetryCache();\r\n }\r\n\r\n return response;\r\n }\r\n\r\n /**\r\n * Updates the authority object of the client. Endpoint discovery must be completed.\r\n * @param updatedAuthority\r\n */\r\n updateAuthority(updatedAuthority: Authority): void {\r\n if (!updatedAuthority.discoveryComplete()) {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Updated authority has not completed endpoint discovery.\");\r\n }\r\n this.authority = updatedAuthority;\r\n }\r\n\r\n /**\r\n * Creates query string for the /token request\r\n * @param request\r\n */\r\n createTokenQueryParameters(request: BaseAuthRequest): string {\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n if (request.tokenQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { IdTokenEntity } from \"./IdTokenEntity\";\r\nimport { AccessTokenEntity } from \"./AccessTokenEntity\";\r\nimport { RefreshTokenEntity } from \"./RefreshTokenEntity\";\r\nimport { AccountEntity } from \"./AccountEntity\";\r\nimport { AppMetadataEntity } from \"./AppMetadataEntity\";\r\n\r\nexport class CacheRecord {\r\n account: AccountEntity | null;\r\n idToken: IdTokenEntity | null;\r\n accessToken: AccessTokenEntity | null;\r\n refreshToken: RefreshTokenEntity | null;\r\n appMetadata: AppMetadataEntity | null;\r\n\r\n constructor(accountEntity?: AccountEntity | null, idTokenEntity?: IdTokenEntity | null, accessTokenEntity?: AccessTokenEntity | null, refreshTokenEntity?: RefreshTokenEntity | null, appMetadataEntity?: AppMetadataEntity | null) {\r\n this.account = accountEntity || null;\r\n this.idToken = idTokenEntity || null;\r\n this.accessToken = accessTokenEntity || null;\r\n this.refreshToken = refreshTokenEntity || null;\r\n this.appMetadata = appMetadataEntity || null;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ISerializableTokenCache } from \"../interface/ISerializableTokenCache\";\r\n\r\n/**\r\n * This class instance helps track the memory changes facilitating\r\n * decisions to read from and write to the persistent cache\r\n */export class TokenCacheContext {\r\n /**\r\n * boolean indicating cache change\r\n */\r\n hasChanged: boolean;\r\n /**\r\n * serializable token cache interface\r\n */\r\n cache: ISerializableTokenCache;\r\n\r\n constructor(tokenCache: ISerializableTokenCache, hasChanged: boolean) {\r\n this.cache = tokenCache;\r\n this.hasChanged = hasChanged;\r\n }\r\n\r\n /**\r\n * boolean which indicates the changes in cache\r\n */\r\n get cacheHasChanged(): boolean {\r\n return this.hasChanged;\r\n }\r\n\r\n /**\r\n * function to retrieve the token cache\r\n */\r\n get tokenCache(): ISerializableTokenCache {\r\n return this.cache;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ServerAuthorizationTokenResponse } from \"./ServerAuthorizationTokenResponse\";\r\nimport { buildClientInfo} from \"../account/ClientInfo\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ServerAuthorizationCodeResponse } from \"./ServerAuthorizationCodeResponse\";\r\nimport { Logger } from \"../logger/Logger\";\r\nimport { ServerError } from \"../error/ServerError\";\r\nimport { AuthToken } from \"../account/AuthToken\";\r\nimport { ScopeSet } from \"../request/ScopeSet\";\r\nimport { AuthenticationResult } from \"./AuthenticationResult\";\r\nimport { AccountEntity } from \"../cache/entities/AccountEntity\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { AuthorityType } from \"../authority/AuthorityType\";\r\nimport { IdTokenEntity } from \"../cache/entities/IdTokenEntity\";\r\nimport { AccessTokenEntity } from \"../cache/entities/AccessTokenEntity\";\r\nimport { RefreshTokenEntity } from \"../cache/entities/RefreshTokenEntity\";\r\nimport { InteractionRequiredAuthError } from \"../error/InteractionRequiredAuthError\";\r\nimport { CacheRecord } from \"../cache/entities/CacheRecord\";\r\nimport { CacheManager } from \"../cache/CacheManager\";\r\nimport { ProtocolUtils, RequestStateObject } from \"../utils/ProtocolUtils\";\r\nimport { AuthenticationScheme, Constants, THE_FAMILY_ID } from \"../utils/Constants\";\r\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\r\nimport { AppMetadataEntity } from \"../cache/entities/AppMetadataEntity\";\r\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin\";\r\nimport { TokenCacheContext } from \"../cache/persistence/TokenCacheContext\";\r\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache\";\r\nimport { AuthorizationCodePayload } from \"./AuthorizationCodePayload\";\r\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\r\n\r\n/**\r\n * Class that handles response parsing.\r\n */\r\nexport class ResponseHandler {\r\n private clientId: string;\r\n private cacheStorage: CacheManager;\r\n private cryptoObj: ICrypto;\r\n private logger: Logger;\r\n private homeAccountIdentifier: string;\r\n private serializableCache: ISerializableTokenCache | null;\r\n private persistencePlugin: ICachePlugin | null;\r\n private performanceClient?: IPerformanceClient;\r\n\r\n constructor(clientId: string, cacheStorage: CacheManager, cryptoObj: ICrypto, logger: Logger, serializableCache: ISerializableTokenCache | null, persistencePlugin: ICachePlugin | null, performanceClient?: IPerformanceClient) {\r\n this.clientId = clientId;\r\n this.cacheStorage = cacheStorage;\r\n this.cryptoObj = cryptoObj;\r\n this.logger = logger;\r\n this.serializableCache = serializableCache;\r\n this.persistencePlugin = persistencePlugin;\r\n this.performanceClient = performanceClient;\r\n }\r\n\r\n /**\r\n * Function which validates server authorization code response.\r\n * @param serverResponseHash\r\n * @param cachedState\r\n * @param cryptoObj\r\n */\r\n validateServerAuthorizationCodeResponse(serverResponseHash: ServerAuthorizationCodeResponse, cachedState: string, cryptoObj: ICrypto): void {\r\n\r\n if (!serverResponseHash.state || !cachedState) {\r\n throw !serverResponseHash.state ? ClientAuthError.createStateNotFoundError(\"Server State\") : ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n\r\n if (decodeURIComponent(serverResponseHash.state) !== decodeURIComponent(cachedState)) {\r\n throw ClientAuthError.createStateMismatchError();\r\n }\r\n\r\n // Check for error\r\n if (serverResponseHash.error || serverResponseHash.error_description || serverResponseHash.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponseHash.error, serverResponseHash.error_description, serverResponseHash.suberror)) {\r\n throw new InteractionRequiredAuthError(\r\n serverResponseHash.error || Constants.EMPTY_STRING,\r\n serverResponseHash.error_description,\r\n serverResponseHash.suberror,\r\n serverResponseHash.timestamp || Constants.EMPTY_STRING,\r\n serverResponseHash.trace_id || Constants.EMPTY_STRING,\r\n serverResponseHash.correlation_id || Constants.EMPTY_STRING,\r\n serverResponseHash.claims || Constants.EMPTY_STRING,\r\n );\r\n }\r\n\r\n throw new ServerError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\r\n }\r\n\r\n if (serverResponseHash.client_info) {\r\n buildClientInfo(serverResponseHash.client_info, cryptoObj);\r\n }\r\n }\r\n\r\n /**\r\n * Function which validates server authorization token response.\r\n * @param serverResponse\r\n */\r\n validateTokenResponse(serverResponse: ServerAuthorizationTokenResponse): void {\r\n // Check for error\r\n if (serverResponse.error || serverResponse.error_description || serverResponse.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(\r\n serverResponse.error,\r\n serverResponse.error_description,\r\n serverResponse.suberror,\r\n serverResponse.timestamp || Constants.EMPTY_STRING,\r\n serverResponse.trace_id || Constants.EMPTY_STRING,\r\n serverResponse.correlation_id || Constants.EMPTY_STRING,\r\n serverResponse.claims || Constants.EMPTY_STRING,\r\n );\r\n }\r\n\r\n const errString = `${serverResponse.error_codes} - [${serverResponse.timestamp}]: ${serverResponse.error_description} - Correlation ID: ${serverResponse.correlation_id} - Trace ID: ${serverResponse.trace_id}`;\r\n throw new ServerError(serverResponse.error, errString, serverResponse.suberror);\r\n }\r\n }\r\n\r\n /**\r\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\r\n * @param serverTokenResponse\r\n * @param authority\r\n */\r\n async handleServerTokenResponse(\r\n serverTokenResponse: ServerAuthorizationTokenResponse,\r\n authority: Authority,\r\n reqTimestamp: number,\r\n request: BaseAuthRequest,\r\n authCodePayload?: AuthorizationCodePayload,\r\n userAssertionHash?: string,\r\n handlingRefreshTokenResponse?: boolean,\r\n forceCacheRefreshTokenResponse?: boolean,\r\n serverRequestId?: string): Promise<AuthenticationResult> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id);\r\n\r\n // create an idToken object (not entity)\r\n let idTokenObj: AuthToken | undefined;\r\n if (serverTokenResponse.id_token) {\r\n idTokenObj = new AuthToken(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj);\r\n\r\n // token nonce check (TODO: Add a warning if no nonce is given?)\r\n if (authCodePayload && !StringUtils.isEmpty(authCodePayload.nonce)) {\r\n if (idTokenObj.claims.nonce !== authCodePayload.nonce) {\r\n throw ClientAuthError.createNonceMismatchError();\r\n }\r\n }\r\n\r\n // token max_age check\r\n if (request.maxAge || (request.maxAge === 0)) {\r\n const authTime = idTokenObj.claims.auth_time;\r\n if (!authTime) {\r\n throw ClientAuthError.createAuthTimeNotFoundError();\r\n }\r\n\r\n AuthToken.checkMaxAge(authTime, request.maxAge);\r\n }\r\n }\r\n\r\n // generate homeAccountId\r\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenObj);\r\n\r\n // save the response tokens\r\n let requestStateObj: RequestStateObject | undefined;\r\n if (!!authCodePayload && !!authCodePayload.state) {\r\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\r\n }\r\n\r\n // Add keyId from request to serverTokenResponse if defined\r\n serverTokenResponse.key_id = serverTokenResponse.key_id || request.sshKid || undefined;\r\n\r\n const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenObj, userAssertionHash, authCodePayload);\r\n let cacheContext;\r\n try {\r\n if (this.persistencePlugin && this.serializableCache) {\r\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\r\n cacheContext = new TokenCacheContext(this.serializableCache, true);\r\n await this.persistencePlugin.beforeCacheAccess(cacheContext);\r\n }\r\n /*\r\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\r\n * If not present, we should return null, as it's the case that another application called removeAccount in between\r\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by\r\n * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.\r\n */\r\n if (handlingRefreshTokenResponse && !forceCacheRefreshTokenResponse && cacheRecord.account) {\r\n const key = cacheRecord.account.generateAccountKey();\r\n const account = this.cacheStorage.getAccount(key);\r\n if (!account) {\r\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, undefined, serverRequestId);\r\n }\r\n }\r\n await this.cacheStorage.saveCacheRecord(cacheRecord);\r\n } finally {\r\n if (this.persistencePlugin && this.serializableCache && cacheContext) {\r\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\r\n await this.persistencePlugin.afterCacheAccess(cacheContext);\r\n }\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, serverTokenResponse, serverRequestId);\r\n }\r\n\r\n /**\r\n * Generates CacheRecord\r\n * @param serverTokenResponse\r\n * @param idTokenObj\r\n * @param authority\r\n */\r\n private generateCacheRecord(serverTokenResponse: ServerAuthorizationTokenResponse, authority: Authority, reqTimestamp: number, request: BaseAuthRequest, idTokenObj?: AuthToken, userAssertionHash?: string, authCodePayload?: AuthorizationCodePayload): CacheRecord {\r\n const env = authority.getPreferredCache();\r\n if (StringUtils.isEmpty(env)) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n\r\n // IdToken: non AAD scenarios can have empty realm\r\n let cachedIdToken: IdTokenEntity | undefined;\r\n let cachedAccount: AccountEntity | undefined;\r\n if (!StringUtils.isEmpty(serverTokenResponse.id_token) && !!idTokenObj) {\r\n cachedIdToken = IdTokenEntity.createIdTokenEntity(\r\n this.homeAccountIdentifier,\r\n env,\r\n serverTokenResponse.id_token || Constants.EMPTY_STRING,\r\n this.clientId,\r\n idTokenObj.claims.tid || Constants.EMPTY_STRING,\r\n );\r\n\r\n cachedAccount = this.generateAccountEntity(\r\n serverTokenResponse,\r\n idTokenObj,\r\n authority,\r\n authCodePayload\r\n );\r\n }\r\n\r\n // AccessToken\r\n let cachedAccessToken: AccessTokenEntity | null = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.access_token)) {\r\n\r\n // If scopes not returned in server response, use request scopes\r\n const responseScopes = serverTokenResponse.scope ? ScopeSet.fromString(serverTokenResponse.scope) : new ScopeSet(request.scopes || []);\r\n\r\n /*\r\n * Use timestamp calculated before request\r\n * Server may return timestamps as strings, parse to numbers if so.\r\n */\r\n const expiresIn: number = (typeof serverTokenResponse.expires_in === \"string\" ? parseInt(serverTokenResponse.expires_in, 10) : serverTokenResponse.expires_in) || 0;\r\n const extExpiresIn: number = (typeof serverTokenResponse.ext_expires_in === \"string\" ? parseInt(serverTokenResponse.ext_expires_in, 10) : serverTokenResponse.ext_expires_in) || 0;\r\n const refreshIn: number | undefined = (typeof serverTokenResponse.refresh_in === \"string\" ? parseInt(serverTokenResponse.refresh_in, 10) : serverTokenResponse.refresh_in) || undefined;\r\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\r\n const refreshOnSeconds = refreshIn && refreshIn > 0 ? reqTimestamp + refreshIn : undefined;\r\n\r\n // non AAD scenarios can have empty realm\r\n cachedAccessToken = AccessTokenEntity.createAccessTokenEntity(\r\n this.homeAccountIdentifier,\r\n env,\r\n serverTokenResponse.access_token || Constants.EMPTY_STRING,\r\n this.clientId,\r\n idTokenObj ? idTokenObj.claims.tid || Constants.EMPTY_STRING : authority.tenant,\r\n responseScopes.printScopes(),\r\n tokenExpirationSeconds,\r\n extendedTokenExpirationSeconds,\r\n this.cryptoObj,\r\n refreshOnSeconds,\r\n serverTokenResponse.token_type,\r\n userAssertionHash,\r\n serverTokenResponse.key_id,\r\n request.claims,\r\n request.requestedClaimsHash\r\n );\r\n }\r\n\r\n // refreshToken\r\n let cachedRefreshToken: RefreshTokenEntity | null = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.refresh_token)) {\r\n cachedRefreshToken = RefreshTokenEntity.createRefreshTokenEntity(\r\n this.homeAccountIdentifier,\r\n env,\r\n serverTokenResponse.refresh_token || Constants.EMPTY_STRING,\r\n this.clientId,\r\n serverTokenResponse.foci,\r\n userAssertionHash\r\n );\r\n }\r\n\r\n // appMetadata\r\n let cachedAppMetadata: AppMetadataEntity | null = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.foci)) {\r\n cachedAppMetadata = AppMetadataEntity.createAppMetadataEntity(this.clientId, env, serverTokenResponse.foci);\r\n }\r\n\r\n return new CacheRecord(cachedAccount, cachedIdToken, cachedAccessToken, cachedRefreshToken, cachedAppMetadata);\r\n }\r\n\r\n /**\r\n * Generate Account\r\n * @param serverTokenResponse\r\n * @param idToken\r\n * @param authority\r\n */\r\n private generateAccountEntity(serverTokenResponse: ServerAuthorizationTokenResponse, idToken: AuthToken, authority: Authority, authCodePayload?: AuthorizationCodePayload): AccountEntity {\r\n const authorityType = authority.authorityType;\r\n const cloudGraphHostName = authCodePayload ? authCodePayload.cloud_graph_host_name : Constants.EMPTY_STRING;\r\n const msGraphhost = authCodePayload ? authCodePayload.msgraph_host : Constants.EMPTY_STRING;\r\n\r\n // ADFS does not require client_info in the response\r\n if (authorityType === AuthorityType.Adfs) {\r\n this.logger.verbose(\"Authority type is ADFS, creating ADFS account\");\r\n return AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost);\r\n }\r\n\r\n // This fallback applies to B2C as well as they fall under an AAD account type.\r\n if (StringUtils.isEmpty(serverTokenResponse.client_info) && authority.protocolMode === \"AAD\") {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n\r\n return serverTokenResponse.client_info ?\r\n AccountEntity.createAccount(serverTokenResponse.client_info, this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost) :\r\n AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost);\r\n }\r\n\r\n /**\r\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\r\n *\r\n * Optionally takes a state string that is set as-is in the response.\r\n *\r\n * @param cacheRecord\r\n * @param idTokenObj\r\n * @param fromTokenCache\r\n * @param stateString\r\n */\r\n static async generateAuthenticationResult(\r\n cryptoObj: ICrypto,\r\n authority: Authority,\r\n cacheRecord: CacheRecord,\r\n fromTokenCache: boolean,\r\n request: BaseAuthRequest,\r\n idTokenObj?: AuthToken,\r\n requestState?: RequestStateObject,\r\n serverTokenResponse?: ServerAuthorizationTokenResponse,\r\n requestId?: string,\r\n ): Promise<AuthenticationResult> {\r\n let accessToken: string = Constants.EMPTY_STRING;\r\n let responseScopes: Array<string> = [];\r\n let expiresOn: Date | null = null;\r\n let extExpiresOn: Date | undefined;\r\n let familyId: string = Constants.EMPTY_STRING;\r\n\r\n if (cacheRecord.accessToken) {\r\n if (cacheRecord.accessToken.tokenType === AuthenticationScheme.POP) {\r\n const popTokenGenerator: PopTokenGenerator = new PopTokenGenerator(cryptoObj);\r\n const { secret, keyId } = cacheRecord.accessToken;\r\n\r\n if (!keyId) {\r\n throw ClientAuthError.createKeyIdMissingError();\r\n }\r\n\r\n accessToken = await popTokenGenerator.signPopToken(secret, keyId, request);\r\n } else {\r\n accessToken = cacheRecord.accessToken.secret;\r\n }\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\r\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\r\n }\r\n\r\n if (cacheRecord.appMetadata) {\r\n familyId = cacheRecord.appMetadata.familyId === THE_FAMILY_ID ? THE_FAMILY_ID : Constants.EMPTY_STRING;\r\n }\r\n const uid = idTokenObj?.claims.oid || idTokenObj?.claims.sub || Constants.EMPTY_STRING;\r\n const tid = idTokenObj?.claims.tid || Constants.EMPTY_STRING;\r\n\r\n // for hybrid + native bridge enablement, send back the native account Id\r\n if(serverTokenResponse?.spa_accountid && !!cacheRecord.account){\r\n cacheRecord.account.nativeAccountId = serverTokenResponse?.spa_accountid;\r\n }\r\n\r\n return {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: cacheRecord.account ? cacheRecord.account.getAccountInfo() : null,\r\n idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,\r\n idTokenClaims: idTokenObj ? idTokenObj.claims : {},\r\n accessToken: accessToken,\r\n fromCache: fromTokenCache,\r\n expiresOn: expiresOn,\r\n correlationId: request.correlationId,\r\n requestId: requestId || Constants.EMPTY_STRING,\r\n extExpiresOn: extExpiresOn,\r\n familyId: familyId,\r\n tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING,\r\n state: requestState ? requestState.userRequestState : Constants.EMPTY_STRING,\r\n cloudGraphHostName: cacheRecord.account?.cloudGraphHostName || Constants.EMPTY_STRING,\r\n msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING,\r\n code: serverTokenResponse?.spa_code,\r\n fromNativeBroker: false,\r\n };\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BaseClient } from \"./BaseClient\";\r\nimport { CommonAuthorizationUrlRequest } from \"../request/CommonAuthorizationUrlRequest\";\r\nimport { CommonAuthorizationCodeRequest } from \"../request/CommonAuthorizationCodeRequest\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\r\nimport { GrantType, AuthenticationScheme, PromptValue, Separators, AADServerParamKeys, HeaderNames } from \"../utils/Constants\";\r\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { NetworkResponse } from \"../network/NetworkManager\";\r\nimport { ResponseHandler } from \"../response/ResponseHandler\";\r\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { UrlString } from \"../url/UrlString\";\r\nimport { ServerAuthorizationCodeResponse } from \"../response/ServerAuthorizationCodeResponse\";\r\nimport { CommonEndSessionRequest } from \"../request/CommonEndSessionRequest\";\r\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\r\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\r\nimport { AuthorizationCodePayload } from \"../response/AuthorizationCodePayload\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { AccountInfo } from \"../account/AccountInfo\";\r\nimport { buildClientInfoFromHomeAccountId, buildClientInfo } from \"../account/ClientInfo\";\r\nimport { CcsCredentialType, CcsCredential } from \"../account/CcsCredential\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { RequestValidator } from \"../request/RequestValidator\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\r\n\r\n/**\r\n * Oauth2.0 Authorization Code client\r\n */\r\nexport class AuthorizationCodeClient extends BaseClient {\r\n // Flag to indicate if client is for hybrid spa auth code redemption\r\n protected includeRedirectUri: boolean = true;\r\n\r\n constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient) {\r\n super(configuration, performanceClient);\r\n }\r\n\r\n /**\r\n * Creates the URL of the authorization request letting the user input credentials and consent to the\r\n * application. The URL target the /authorize endpoint of the authority configured in the\r\n * application object.\r\n *\r\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\r\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\r\n * acquireToken(AuthorizationCodeRequest)\r\n * @param request\r\n */\r\n async getAuthCodeUrl(request: CommonAuthorizationUrlRequest): Promise<string> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.GetAuthCodeUrl, request.correlationId);\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthClientCreateQueryString, request.correlationId);\r\n const queryString = await this.createAuthCodeUrlQueryString(request);\r\n\r\n return UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString);\r\n }\r\n\r\n /**\r\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\r\n * authorization_code_grant\r\n * @param request\r\n */\r\n async acquireToken(request: CommonAuthorizationCodeRequest, authCodePayload?: AuthorizationCodePayload): Promise<AuthenticationResult> {\r\n if (!request || !request.code) {\r\n throw ClientAuthError.createTokenRequestCannotBeMadeError();\r\n }\r\n\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId);\r\n \r\n // @ts-ignore\r\n const atsMeasurement = this.performanceClient?.startMeasurement(\"AuthCodeClientAcquireToken\", request.correlationId);\r\n this.logger.info(\"in acquireToken call in auth-code client\");\r\n\r\n const reqTimestamp = TimeUtils.nowSeconds();\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId);\r\n const response = await this.executeTokenRequest(this.authority, request);\r\n\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const httpVerAuthority = response.headers?.[HeaderNames.X_MS_HTTP_VERSION];\r\n if(httpVerAuthority)\r\n {\r\n atsMeasurement?.addStaticFields({\r\n httpVerAuthority\r\n });\r\n }\r\n const responseHandler = new ResponseHandler(\r\n this.config.authOptions.clientId,\r\n this.cacheManager,\r\n this.cryptoUtils,\r\n this.logger,\r\n this.config.serializableCache,\r\n this.config.persistencePlugin,\r\n this.performanceClient\r\n );\r\n\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.HandleServerTokenResponse, request.correlationId);\r\n return responseHandler.handleServerTokenResponse(\r\n response.body,\r\n this.authority,\r\n reqTimestamp,\r\n request,\r\n authCodePayload,\r\n undefined,\r\n undefined,\r\n undefined,\r\n requestId\r\n ).then((result: AuthenticationResult) => {\r\n atsMeasurement?.endMeasurement({\r\n success: true\r\n });\r\n return result;\r\n })\r\n .catch((error) => {\r\n this.logger.verbose(\"Error in fetching token in ACC\", request.correlationId);\r\n atsMeasurement?.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n throw error;\r\n });\r\n }\r\n\r\n /**\r\n * Handles the hash fragment response from public client code request. Returns a code response used by\r\n * the client to exchange for a token in acquireToken.\r\n * @param hashFragment\r\n */\r\n handleFragmentResponse(hashFragment: string, cachedState: string): AuthorizationCodePayload {\r\n // Handle responses.\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null);\r\n\r\n // Deserialize hash fragment response parameters.\r\n const hashUrlString = new UrlString(hashFragment);\r\n // Deserialize hash fragment response parameters.\r\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hashUrlString.getHash());\r\n\r\n // Get code response\r\n responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState, this.cryptoUtils);\r\n\r\n // throw when there is no auth code in the response\r\n if (!serverParams.code) {\r\n throw ClientAuthError.createNoAuthCodeInServerResponseError();\r\n }\r\n return {\r\n ...serverParams,\r\n // Code param is optional in ServerAuthorizationCodeResponse but required in AuthorizationCodePaylod\r\n code: serverParams.code\r\n };\r\n }\r\n\r\n /**\r\n * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param authorityUri\r\n */\r\n getLogoutUri(logoutRequest: CommonEndSessionRequest): string {\r\n // Throw error if logoutRequest is null/undefined\r\n if (!logoutRequest) {\r\n throw ClientConfigurationError.createEmptyLogoutRequestError();\r\n }\r\n const queryString = this.createLogoutUrlQueryString(logoutRequest);\r\n\r\n // Construct logout URI\r\n return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString);\r\n }\r\n\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n private async executeTokenRequest(authority: Authority, request: CommonAuthorizationCodeRequest): Promise<NetworkResponse<ServerAuthorizationTokenResponse>> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId);\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId);\r\n \r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n \r\n const requestBody = await this.createTokenRequestBody(request);\r\n \r\n let ccsCredential: CcsCredential | undefined = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\r\n ccsCredential = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n } catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n const headers: Record<string, string> = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential);\r\n\r\n const thumbprint: RequestThumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n\r\n return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint);\r\n }\r\n\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n private async createTokenRequestBody(request: CommonAuthorizationCodeRequest): Promise<string> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId);\r\n\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n\r\n /*\r\n * For hybrid spa flow, there will be a code but no verifier\r\n * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\r\n */\r\n if (!this.includeRedirectUri) {\r\n // Just validate\r\n RequestValidator.validateRedirectUri(request.redirectUri);\r\n } else {\r\n // Validate and include redirect uri\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n }\r\n\r\n // Add scope array, parameter builder will add default scopes and dedupe\r\n parameterBuilder.addScopes(request.scopes);\r\n\r\n // add code: user set, not validated\r\n parameterBuilder.addAuthorizationCode(request.code);\r\n\r\n // Add library metadata\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n\r\n if (this.serverTelemetryManager) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n\r\n // add code_verifier if passed\r\n if (request.codeVerifier) {\r\n parameterBuilder.addCodeVerifier(request.codeVerifier);\r\n }\r\n\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n\r\n parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT);\r\n parameterBuilder.addClientInfo();\r\n\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\r\n const reqCnfData = await popTokenGenerator.generateCnf(request);\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n parameterBuilder.addPopToken(reqCnfData.reqCnfString);\r\n } else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n } else {\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n }\r\n\r\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n\r\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n\r\n let ccsCred: CcsCredential | undefined = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\r\n ccsCred = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n } catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n } else {\r\n ccsCred = request.ccsCredential;\r\n }\r\n\r\n // Adds these as parameters in the request instead of headers to prevent CORS preflight request\r\n if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n } catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(ccsCred.credential);\r\n break;\r\n }\r\n }\r\n\r\n if (request.tokenBodyParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters);\r\n }\r\n\r\n // Add hybrid spa parameters if not already provided\r\n if (request.enableSpaAuthorizationCode && (!request.tokenBodyParameters || !request.tokenBodyParameters[AADServerParamKeys.RETURN_SPA_CODE])) {\r\n parameterBuilder.addExtraQueryParameters({\r\n [AADServerParamKeys.RETURN_SPA_CODE]: \"1\"\r\n });\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n\r\n /**\r\n * This API validates the `AuthorizationCodeUrlRequest` and creates a URL\r\n * @param request\r\n */\r\n private async createAuthCodeUrlQueryString(request: CommonAuthorizationUrlRequest): Promise<string> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateQueryString, request.correlationId);\r\n\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n\r\n const requestScopes = [...request.scopes || [], ...request.extraScopesToConsent || []];\r\n parameterBuilder.addScopes(requestScopes);\r\n\r\n // validate the redirectUri (to be a non null value)\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n\r\n // generate the correlationId if not set by the user and add\r\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n\r\n // add response_mode. If not passed in it defaults to query.\r\n parameterBuilder.addResponseMode(request.responseMode);\r\n\r\n // add response_type = code\r\n parameterBuilder.addResponseTypeCode();\r\n\r\n // add library info parameters\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n\r\n // add client_info=1\r\n parameterBuilder.addClientInfo();\r\n\r\n if (request.codeChallenge && request.codeChallengeMethod) {\r\n parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod);\r\n }\r\n\r\n if (request.prompt) {\r\n parameterBuilder.addPrompt(request.prompt);\r\n }\r\n\r\n if (request.domainHint) {\r\n parameterBuilder.addDomainHint(request.domainHint);\r\n }\r\n\r\n // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object\r\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\r\n // AAD will throw if prompt=select_account is passed with an account hint\r\n if (request.sid && request.prompt === PromptValue.NONE) {\r\n // SessionID is only used in silent calls\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\r\n parameterBuilder.addSid(request.sid);\r\n } else if (request.account) {\r\n const accountSid = this.extractAccountSid(request.account);\r\n const accountLoginHintClaim = this.extractLoginHint(request.account);\r\n // If login_hint claim is present, use it over sid/username\r\n if (accountLoginHintClaim) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: login_hint claim present on account\");\r\n parameterBuilder.addLoginHint(accountLoginHintClaim);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n } catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n } else if (accountSid && request.prompt === PromptValue.NONE) {\r\n /*\r\n * If account and loginHint are provided, we will check account first for sid before adding loginHint\r\n * SessionId is only used in silent calls\r\n */\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\r\n parameterBuilder.addSid(accountSid);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n } catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n } else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n } else if (request.account.username) {\r\n // Fallback to account username if provided\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\r\n parameterBuilder.addLoginHint(request.account.username);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n } catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n } else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n }\r\n } else {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\r\n }\r\n\r\n if (request.nonce) {\r\n parameterBuilder.addNonce(request.nonce);\r\n }\r\n\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n\r\n if (request.nativeBroker) {\r\n // signal ests that this is a WAM call\r\n parameterBuilder.addNativeBroker();\r\n\r\n // pass the req_cnf for POP\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n // to reduce the URL length, it is recommended to send the short form of the req_cnf\r\n const reqCnfData = await popTokenGenerator.generateCnf(request);\r\n parameterBuilder.addPopToken(reqCnfData.reqCnfString);\r\n }\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n\r\n /**\r\n * This API validates the `EndSessionRequest` and creates a URL\r\n * @param request\r\n */\r\n private createLogoutUrlQueryString(request: CommonEndSessionRequest): string {\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n if (request.postLogoutRedirectUri) {\r\n parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri);\r\n }\r\n\r\n if (request.correlationId) {\r\n parameterBuilder.addCorrelationId(request.correlationId);\r\n }\r\n\r\n if (request.idTokenHint) {\r\n parameterBuilder.addIdTokenHint(request.idTokenHint);\r\n }\r\n\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n\r\n if (request.logoutHint) {\r\n parameterBuilder.addLogoutHint(request.logoutHint);\r\n }\r\n\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n\r\n /**\r\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\r\n * @param account\r\n */\r\n private extractAccountSid(account: AccountInfo): string | null {\r\n return account.idTokenClaims?.sid || null;\r\n }\r\n\r\n private extractLoginHint(account: AccountInfo): string | null {\r\n return account.idTokenClaims?.login_hint || null;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization.\r\n */\r\nexport type OpenIdConfigResponse = {\r\n authorization_endpoint: string;\r\n token_endpoint: string;\r\n end_session_endpoint?: string;\r\n issuer: string;\r\n jwks_uri: string;\r\n};\r\n\r\nexport function isOpenIdConfigResponse(response: object): boolean {\r\n return (\r\n response.hasOwnProperty(\"authorization_endpoint\") &&\r\n response.hasOwnProperty(\"token_endpoint\") && \r\n response.hasOwnProperty(\"issuer\") &&\r\n response.hasOwnProperty(\"jwks_uri\")\r\n );\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nexport const rawMetdataJSON = {\"endpointMetadata\":{\"https://login.microsoftonline.com/common/\":{\"token_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.com/common/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.com/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.com/common/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.com\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pas.windows.net\"},\"https://login.chinacloudapi.cn/common/\":{\"token_endpoint\":\"https://login.chinacloudapi.cn/common/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.chinacloudapi.cn/common/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\",\"authorization_endpoint\":\"https://login.chinacloudapi.cn/common/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.chinacloudapi.cn/common/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.chinacloudapi.cn/common/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.chinacloudapi.cn/common/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"partner.microsoftonline.cn\",\"cloud_graph_host_name\":\"graph.chinacloudapi.cn\",\"msgraph_host\":\"microsoftgraph.chinacloudapi.cn\",\"rbac_url\":\"https://pas.chinacloudapi.cn\"},\"https://login.microsoftonline.us/common/\":{\"token_endpoint\":\"https://login.microsoftonline.us/common/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.us/common/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.us/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.us/common/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.us/common/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.us/common/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.us/common/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.us\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pasff.usgovcloudapi.net\"},\"https://login.microsoftonline.com/consumers/\":{\"token_endpoint\":\"https://login.microsoftonline.com/consumers/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.com/consumers/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.com/consumers/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.com/consumers/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.com/consumers/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.com\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pas.windows.net\"},\"https://login.chinacloudapi.cn/consumers/\":{\"token_endpoint\":\"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.chinacloudapi.cn/consumers/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.partner.microsoftonline.cn/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\",\"authorization_endpoint\":\"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.chinacloudapi.cn/consumers/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"partner.microsoftonline.cn\",\"cloud_graph_host_name\":\"graph.chinacloudapi.cn\",\"msgraph_host\":\"microsoftgraph.chinacloudapi.cn\",\"rbac_url\":\"https://pas.chinacloudapi.cn\"},\"https://login.microsoftonline.us/consumers/\":{\"token_endpoint\":\"https://login.microsoftonline.us/consumers/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.us/consumers/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.us/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.us/consumers/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.us/consumers/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.us/consumers/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.us/consumers/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.us\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pasff.usgovcloudapi.net\"},\"https://login.microsoftonline.com/organizations/\":{\"token_endpoint\":\"https://login.microsoftonline.com/organizations/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.com/organizations/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.com/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.com/organizations/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.com/organizations/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.com/organizations/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.com\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pas.windows.net\"},\"https://login.chinacloudapi.cn/organizations/\":{\"token_endpoint\":\"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.chinacloudapi.cn/organizations/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\",\"authorization_endpoint\":\"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.chinacloudapi.cn/organizations/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"partner.microsoftonline.cn\",\"cloud_graph_host_name\":\"graph.chinacloudapi.cn\",\"msgraph_host\":\"microsoftgraph.chinacloudapi.cn\",\"rbac_url\":\"https://pas.chinacloudapi.cn\"},\"https://login.microsoftonline.us/organizations/\":{\"token_endpoint\":\"https://login.microsoftonline.us/organizations/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.us/organizations/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.us/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.us/organizations/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.us/organizations/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.us/organizations/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.us/organizations/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.us\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pasff.usgovcloudapi.net\"}},\"instanceDiscoveryMetadata\":{\"https://login.microsoftonline.com/common/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.chinacloudapi.cn/common/\":{\"tenant_discovery_endpoint\":\"https://login.chinacloudapi.cn/common/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.us/common/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.us/common/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.com/consumers/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.com/consumers/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.chinacloudapi.cn/consumers/\":{\"tenant_discovery_endpoint\":\"https://login.chinacloudapi.cn/consumers/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.us/consumers/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.us/consumers/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.com/organizations/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.chinacloudapi.cn/organizations/\":{\"tenant_discovery_endpoint\":\"https://login.chinacloudapi.cn/organizations/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.us/organizations/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.us/organizations/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]}}};\r\n\r\nexport const EndpointMetadata = rawMetdataJSON.endpointMetadata;\r\nexport const InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata;\r\n\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { NetworkResponse } from \"../network/NetworkManager\";\r\nimport { IMDSBadResponse } from \"../response/IMDSBadResponse\";\r\nimport { Constants, RegionDiscoverySources, ResponseCodes } from \"../utils/Constants\";\r\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\r\nimport { ImdsOptions } from \"./ImdsOptions\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\r\n\r\nexport class RegionDiscovery {\r\n // Network interface to make requests with.\r\n protected networkInterface: INetworkModule;\r\n // Performance client\r\n protected performanceClient: IPerformanceClient | undefined;\r\n // CorrelationId\r\n protected correlationId: string | undefined;\r\n // Options for the IMDS endpoint request\r\n protected static IMDS_OPTIONS: ImdsOptions = {\r\n headers: {\r\n Metadata: \"true\",\r\n },\r\n };\r\n\r\n constructor(networkInterface: INetworkModule, performanceClient?: IPerformanceClient, correlationId?: string) {\r\n this.networkInterface = networkInterface;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n }\r\n\r\n /**\r\n * Detect the region from the application's environment.\r\n * \r\n * @returns Promise<string | null>\r\n */\r\n public async detectRegion(environmentRegion: string | undefined, regionDiscoveryMetadata: RegionDiscoveryMetadata): Promise<string | null> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId);\r\n \r\n // Initialize auto detected region with the region from the envrionment \r\n let autodetectedRegionName = environmentRegion;\r\n\r\n // Check if a region was detected from the environment, if not, attempt to get the region from IMDS \r\n if (!autodetectedRegionName) {\r\n const options = RegionDiscovery.IMDS_OPTIONS;\r\n\r\n try {\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\r\n const localIMDSVersionResponse = await this.getRegionFromIMDS(Constants.IMDS_VERSION, options);\r\n if (localIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = localIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\r\n } \r\n \r\n // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry. \r\n if (localIMDSVersionResponse.status === ResponseCodes.httpBadRequest) {\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId);\r\n const currentIMDSVersion = await this.getCurrentVersion(options);\r\n if (!currentIMDSVersion) {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n }\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\r\n const currentIMDSVersionResponse = await this.getRegionFromIMDS(currentIMDSVersion, options);\r\n if (currentIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = currentIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\r\n }\r\n }\r\n } catch(e) {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n } \r\n } else {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.ENVIRONMENT_VARIABLE;\r\n }\r\n\r\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\r\n if (!autodetectedRegionName) {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n }\r\n\r\n return autodetectedRegionName || null;\r\n }\r\n\r\n /**\r\n * Make the call to the IMDS endpoint\r\n * \r\n * @param imdsEndpointUrl\r\n * @returns Promise<NetworkResponse<string>>\r\n */\r\n private async getRegionFromIMDS(version: string, options: ImdsOptions): Promise<NetworkResponse<string>> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\r\n return this.networkInterface.sendGetRequestAsync<string>(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT);\r\n }\r\n\r\n /**\r\n * Get the most recent version of the IMDS endpoint available\r\n * \r\n * @returns Promise<string | null>\r\n */\r\n private async getCurrentVersion(options: ImdsOptions): Promise<string | null> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId);\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync<IMDSBadResponse>(`${Constants.IMDS_ENDPOINT}?format=json`, options);\r\n\r\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\r\n if (response.status === ResponseCodes.httpBadRequest && response.body && response.body[\"newest-versions\"] && response.body[\"newest-versions\"].length > 0) {\r\n return response.body[\"newest-versions\"][0];\r\n }\r\n\r\n return null;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError, InteractionRequiredAuthError } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"./BrowserAuthError\";\r\n\r\nexport type OSError = {\r\n error: number;\r\n protocol_error: string;\r\n properties: object;\r\n status: string;\r\n retryable?: boolean;\r\n};\r\n\r\nexport enum NativeStatusCode {\r\n USER_INTERACTION_REQUIRED = \"USER_INTERACTION_REQUIRED\",\r\n USER_CANCEL = \"USER_CANCEL\",\r\n NO_NETWORK = \"NO_NETWORK\",\r\n TRANSIENT_ERROR = \"TRANSIENT_ERROR\",\r\n PERSISTENT_ERROR = \"PERSISTENT_ERROR\",\r\n DISABLED = \"DISABLED\",\r\n ACCOUNT_UNAVAILABLE = \"ACCOUNT_UNAVAILABLE\"\r\n}\r\n\r\nexport const NativeAuthErrorMessage = {\r\n extensionError: {\r\n code: \"ContentError\"\r\n },\r\n userSwitch: {\r\n code: \"user_switch\",\r\n desc: \"User attempted to switch accounts in the native broker, which is not allowed. All new accounts must sign-in through the standard web flow first, please try again.\"\r\n },\r\n tokensNotFoundInCache: {\r\n code: \"tokens_not_found_in_internal_memory_cache\",\r\n desc: \"Tokens not cached in MSAL JS internal memory, please make the WAM request\"\r\n }\r\n};\r\n\r\nexport class NativeAuthError extends AuthError {\r\n ext: OSError | undefined;\r\n\r\n constructor(errorCode: string, description: string, ext?: OSError) {\r\n super(errorCode, description);\r\n\r\n Object.setPrototypeOf(this, NativeAuthError.prototype);\r\n this.name = \"NativeAuthError\";\r\n this.ext = ext;\r\n }\r\n\r\n /**\r\n * These errors should result in a fallback to the 'standard' browser based auth flow.\r\n */\r\n isFatal(): boolean {\r\n if (this.ext && this.ext.status && (this.ext.status === NativeStatusCode.PERSISTENT_ERROR || this.ext.status === NativeStatusCode.DISABLED)) {\r\n return true;\r\n }\r\n\r\n switch (this.errorCode) {\r\n case NativeAuthErrorMessage.extensionError.code:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Create the appropriate error object based on the WAM status code.\r\n * @param code\r\n * @param description\r\n * @param ext\r\n * @returns\r\n */\r\n static createError(code: string, description: string, ext?: OSError): AuthError {\r\n if (ext && ext.status) {\r\n switch (ext.status) {\r\n case NativeStatusCode.ACCOUNT_UNAVAILABLE:\r\n return InteractionRequiredAuthError.createNativeAccountUnavailableError();\r\n case NativeStatusCode.USER_INTERACTION_REQUIRED:\r\n return new InteractionRequiredAuthError(code, description);\r\n case NativeStatusCode.USER_CANCEL:\r\n return BrowserAuthError.createUserCancelledError();\r\n case NativeStatusCode.NO_NETWORK:\r\n return BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n }\r\n\r\n return new NativeAuthError(code, description, ext);\r\n }\r\n\r\n /**\r\n * Creates user switch error when the user chooses a different account in the native broker prompt\r\n * @returns\r\n */\r\n static createUserSwitchError(): NativeAuthError {\r\n return new NativeAuthError(NativeAuthErrorMessage.userSwitch.code, NativeAuthErrorMessage.userSwitch.desc);\r\n }\r\n\r\n /**\r\n * Creates a tokens not found error when the internal cache look up fails\r\n * @returns NativeAuthError: tokensNotFoundInCache\r\n */\r\n static createTokensNotFoundInCacheError(): NativeAuthError {\r\n return new NativeAuthError(NativeAuthErrorMessage.tokensNotFoundInCache.code, NativeAuthErrorMessage.tokensNotFoundInCache.desc);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthorityType } from \"./AuthorityType\";\r\nimport { isOpenIdConfigResponse, OpenIdConfigResponse } from \"./OpenIdConfigResponse\";\r\nimport { UrlString } from \"../url/UrlString\";\r\nimport { IUri } from \"../url/IUri\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { AADAuthorityConstants, AuthorityMetadataSource, Constants, RegionDiscoveryOutcomes } from \"../utils/Constants\";\r\nimport { EndpointMetadata, InstanceDiscoveryMetadata } from \"./AuthorityMetadata\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ProtocolMode } from \"./ProtocolMode\";\r\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\r\nimport { AuthorityMetadataEntity } from \"../cache/entities/AuthorityMetadataEntity\";\r\nimport { AuthorityOptions, AzureCloudInstance } from \"./AuthorityOptions\";\r\nimport { CloudInstanceDiscoveryResponse, isCloudInstanceDiscoveryResponse } from \"./CloudInstanceDiscoveryResponse\";\r\nimport {\r\n CloudInstanceDiscoveryErrorResponse,\r\n isCloudInstanceDiscoveryErrorResponse\r\n} from \"./CloudInstanceDiscoveryErrorResponse\";\r\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\r\nimport { RegionDiscovery } from \"./RegionDiscovery\";\r\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\r\nimport { ImdsOptions } from \"./ImdsOptions\";\r\nimport { AzureCloudOptions } from \"../config/ClientConfiguration\";\r\nimport { Logger } from \"../logger/Logger\";\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\r\n\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n */\r\nexport class Authority {\r\n // Canonical authority url string\r\n private _canonicalAuthority: UrlString;\r\n // Canonicaly authority url components\r\n private _canonicalAuthorityUrlComponents: IUri | null;\r\n // Network interface to make requests with.\r\n protected networkInterface: INetworkModule;\r\n // Cache Manager to cache network responses\r\n protected cacheManager: ICacheManager;\r\n // Protocol mode to construct endpoints\r\n private authorityOptions: AuthorityOptions;\r\n // Authority metadata\r\n private metadata: AuthorityMetadataEntity;\r\n // Region discovery service\r\n private regionDiscovery: RegionDiscovery;\r\n // Region discovery metadata\r\n public regionDiscoveryMetadata: RegionDiscoveryMetadata;\r\n // Logger object\r\n private logger: Logger;\r\n // Performance client\r\n protected performanceClient: IPerformanceClient | undefined;\r\n // Correlation Id\r\n protected correlationId: string | undefined;\r\n // Reserved tenant domain names that will not be replaced with tenant id\r\n private static reservedTenantDomains: Set<string> = (new Set([\r\n \"{tenant}\",\r\n \"{tenantid}\",\r\n AADAuthorityConstants.COMMON,\r\n AADAuthorityConstants.CONSUMERS,\r\n AADAuthorityConstants.ORGANIZATIONS\r\n ]));\r\n\r\n constructor(\r\n authority: string,\r\n networkInterface: INetworkModule,\r\n cacheManager: ICacheManager,\r\n authorityOptions: AuthorityOptions,\r\n logger: Logger,\r\n performanceClient?: IPerformanceClient,\r\n correlationId?: string\r\n ) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n this.regionDiscoveryMetadata = { region_used: undefined, region_source: undefined, region_outcome: undefined };\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n this.regionDiscovery = new RegionDiscovery(networkInterface, this.performanceClient, this.correlationId);\r\n }\r\n\r\n /**\r\n * Get {@link AuthorityType}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n private getAuthorityType(authorityUri: IUri): AuthorityType {\r\n // CIAM auth url pattern is being standardized as: <tenant>.ciamlogin.com\r\n if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) {\r\n return AuthorityType.Ciam;\r\n }\r\n\r\n const pathSegments = authorityUri.PathSegments;\r\n if (pathSegments.length) {\r\n switch(pathSegments[0].toLowerCase()) {\r\n case Constants.ADFS:\r\n return AuthorityType.Adfs;\r\n case Constants.DSTS:\r\n return AuthorityType.Dsts;\r\n default:\r\n break;\r\n }\r\n }\r\n return AuthorityType.Default;\r\n }\r\n\r\n // See above for AuthorityType\r\n public get authorityType(): AuthorityType {\r\n return this.getAuthorityType(this.canonicalAuthorityUrlComponents);\r\n }\r\n\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n public get protocolMode(): ProtocolMode {\r\n return this.authorityOptions.protocolMode;\r\n }\r\n\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n public get options(): AuthorityOptions {\r\n return this.authorityOptions;\r\n }\r\n\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n public get canonicalAuthority(): string {\r\n return this._canonicalAuthority.urlString;\r\n }\r\n\r\n /**\r\n * Sets canonical authority.\r\n */\r\n public set canonicalAuthority(url: string) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n }\r\n\r\n /**\r\n * Get authority components.\r\n */\r\n public get canonicalAuthorityUrlComponents(): IUri {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents();\r\n }\r\n\r\n return this._canonicalAuthorityUrlComponents;\r\n }\r\n\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n public get hostnameAndPort(): string {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n }\r\n\r\n /**\r\n * Get tenant for authority.\r\n */\r\n public get tenant(): string {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n }\r\n\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n public get authorizationEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.authorization_endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n public get tokenEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n public get deviceCodeEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n public get endSessionEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n // ROPC policies may not have end_session_endpoint set\r\n if (!this.metadata.end_session_endpoint) {\r\n throw ClientAuthError.createLogoutNotSupportedError();\r\n }\r\n return this.replacePath(this.metadata.end_session_endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n public get selfSignedJwtAudience(): string {\r\n if(this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.issuer);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * Jwks_uri for token signing keys\r\n */\r\n public get jwksUri(): string {\r\n if(this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.jwks_uri);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * Returns a flag indicating that tenant name can be replaced in authority {@link IUri}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n private canReplaceTenant(authorityUri: IUri): boolean {\r\n return authorityUri.PathSegments.length === 1\r\n && !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0])\r\n && this.getAuthorityType(authorityUri) === AuthorityType.Default\r\n && this.protocolMode === ProtocolMode.AAD;\r\n }\r\n\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n private replaceTenant(urlString: string): string {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n }\r\n\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString\r\n */\r\n private replacePath(urlString: string): string {\r\n let endpoint = urlString;\r\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents();\r\n const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments;\r\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n\r\n currentAuthorityParts.forEach((currentPart, index) => {\r\n let cachedPart = cachedAuthorityParts[index];\r\n if (index === 0 && this.canReplaceTenant(cachedAuthorityUrlComponents))\r\n {\r\n const tenantId = (new UrlString(this.metadata.authorization_endpoint)).getUrlComponents().PathSegments[0];\r\n /**\r\n * Check if AAD canonical authority contains tenant domain name, for example \"testdomain.onmicrosoft.com\",\r\n * by comparing its first path segment to the corresponding authorization endpoint path segment, which is\r\n * always resolved with tenant id by OIDC.\r\n */\r\n if (cachedPart !== tenantId) {\r\n this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`);\r\n cachedPart = tenantId;\r\n }\r\n }\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\r\n }\r\n });\r\n\r\n return this.replaceTenant(endpoint);\r\n }\r\n\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n protected get defaultOpenIdConfigurationEndpoint(): string {\r\n if (\r\n this.authorityType === AuthorityType.Adfs ||\r\n this.authorityType === AuthorityType.Dsts ||\r\n this.protocolMode === ProtocolMode.OIDC\r\n ) {\r\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\r\n }\r\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\r\n }\r\n\r\n /**\r\n * Boolean that returns whethr or not tenant discovery has been completed.\r\n */\r\n discoveryComplete(): boolean {\r\n return !!this.metadata;\r\n }\r\n\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n public async resolveEndpointsAsync(): Promise<void> {\r\n\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId);\r\n\r\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = new AuthorityMetadataEntity();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId);\r\n const cloudDiscoverySource = await this.updateCloudDiscoveryMetadata(metadataEntity);\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId);\r\n const endpointSource = await this.updateEndpointMetadata(metadataEntity);\r\n\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointSource !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.resetExpiresAt();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n\r\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n }\r\n\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity\r\n */\r\n private async updateEndpointMetadata(metadataEntity: AuthorityMetadataEntity): Promise<AuthorityMetadataSource> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId);\r\n\r\n let metadata = this.getEndpointMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateEndpointMetadata(metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId);\r\n metadata = await this.getEndpointMetadataFromNetwork();\r\n if (metadata) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\r\n metadata = await this.updateMetadataWithRegionalInformation(metadata);\r\n }\r\n\r\n metadataEntity.updateEndpointMetadata(metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n\r\n let harcodedMetadata = this.getEndpointMetadataFromHardcodedValues();\r\n if (harcodedMetadata && !this.authorityOptions.skipAuthorityMetadataCache) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\r\n harcodedMetadata = await this.updateMetadataWithRegionalInformation(\r\n harcodedMetadata\r\n );\r\n }\r\n\r\n metadataEntity.updateEndpointMetadata(harcodedMetadata, false);\r\n return AuthorityMetadataSource.HARDCODED_VALUES;\r\n } else {\r\n throw ClientAuthError.createUnableToGetOpenidConfigError(\r\n this.defaultOpenIdConfigurationEndpoint\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached\r\n * authority metadata can be used for the requested authority. Protects against same domain different\r\n * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n private isAuthoritySameType(metadataEntity: AuthorityMetadataEntity): boolean {\r\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n\r\n return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length;\r\n }\r\n\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n private getEndpointMetadataFromConfig(): OpenIdConfigResponse | null {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata) as OpenIdConfigResponse;\r\n } catch (e) {\r\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n private async getEndpointMetadataFromNetwork(): Promise<OpenIdConfigResponse | null> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId);\r\n\r\n const options: ImdsOptions = {};\r\n\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n\r\n try {\r\n const response = await this.networkInterface.\r\n sendGetRequestAsync<OpenIdConfigResponse>(this.defaultOpenIdConfigurationEndpoint, options);\r\n return isOpenIdConfigResponse(response.body) ? response.body : null;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Get OAuth endpoints for common authorities.\r\n */\r\n private getEndpointMetadataFromHardcodedValues(): OpenIdConfigResponse | null {\r\n if (this.canonicalAuthority in EndpointMetadata) {\r\n return EndpointMetadata[this.canonicalAuthority];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Update the retrieved metadata with regional information.\r\n * User selected Azure region will be used if configured.\r\n */\r\n private async updateMetadataWithRegionalInformation(\r\n metadata: OpenIdConfigResponse\r\n ): Promise<OpenIdConfigResponse> {\r\n this.performanceClient?.addQueueMeasurement(\r\n PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation,\r\n this.correlationId\r\n );\r\n\r\n const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion;\r\n\r\n if (userConfiguredAzureRegion) {\r\n if (userConfiguredAzureRegion !== Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\r\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\r\n this.regionDiscoveryMetadata.region_used = userConfiguredAzureRegion;\r\n return Authority.replaceWithRegionalInformation(\r\n metadata, \r\n userConfiguredAzureRegion\r\n );\r\n }\r\n \r\n this.performanceClient?.setPreQueueTime(\r\n PerformanceEvents.RegionDiscoveryDetectRegion,\r\n this.correlationId\r\n );\r\n \r\n const autodetectedRegionName = await this.regionDiscovery.detectRegion(\r\n this.authorityOptions.azureRegionConfiguration?.environmentRegion,\r\n this.regionDiscoveryMetadata\r\n );\r\n \r\n if (autodetectedRegionName) {\r\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL;\r\n this.regionDiscoveryMetadata.region_used = autodetectedRegionName;\r\n return Authority.replaceWithRegionalInformation(\r\n metadata, \r\n autodetectedRegionName\r\n );\r\n }\r\n \r\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\r\n }\r\n\r\n return metadata;\r\n }\r\n\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache\r\n * and returns where the information was retrieved from\r\n * @param metadataEntity\r\n * @returns AuthorityMetadataSource\r\n */\r\n private async updateCloudDiscoveryMetadata(metadataEntity: AuthorityMetadataEntity): Promise<AuthorityMetadataSource> {\r\n\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId);\r\n\r\n // attempt to read metadata from the config\r\n this.logger.verbose(\"Attempting to get cloud discovery metadata in the config\");\r\n this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities || Constants.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata || Constants.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`);\r\n let metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata in the config.\");\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n\r\n // If the cached metadata came from config but that config was not passed to this instance, we must go to the network\r\n this.logger.verbose(\"Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the cache.\");\r\n const metadataEntityExpired = metadataEntity.isExpired();\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntityExpired) {\r\n this.logger.verbose(\"Found metadata in the cache.\");\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n } else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n\r\n this.logger.verbose(\"Did not find cloud discovery metadata in the cache... Attempting to get cloud discovery metadata from the network.\");\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId);\r\n metadata = await this.getCloudDiscoveryMetadataFromNetwork();\r\n if (metadata) {\r\n this.logger.verbose(\"cloud discovery metadata was successfully returned from getCloudDiscoveryMetadataFromNetwork()\");\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n\r\n this.logger.verbose(\"Did not find cloud discovery metadata from the network... Attempting to get cloud discovery metadata from hardcoded values.\");\r\n const harcodedMetadata = this.getCloudDiscoveryMetadataFromHarcodedValues();\r\n if (harcodedMetadata && !this.options.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Found cloud discovery metadata from hardcoded values.\");\r\n metadataEntity.updateCloudDiscoveryMetadata(harcodedMetadata, false);\r\n return AuthorityMetadataSource.HARDCODED_VALUES;\r\n }\r\n\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n this.logger.error(\"Did not find cloud discovery metadata from hardcoded values... Metadata could not be obtained from config, cache, network or hardcoded values. Throwing Untrusted Authority Error.\");\r\n throw ClientConfigurationError.createUntrustedAuthorityError();\r\n }\r\n\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n private getCloudDiscoveryMetadataFromConfig(): CloudDiscoveryMetadata | null {\r\n\r\n // CIAM does not support cloud discovery metadata\r\n if (this.authorityType === AuthorityType.Ciam) {\r\n this.logger.verbose(\"CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n this.logger.verbose(\"The cloud discovery metadata has been provided as a network response, in the config.\");\r\n try {\r\n this.logger.verbose(\"Attempting to parse the cloud discovery metadata.\");\r\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata) as CloudInstanceDiscoveryResponse;\r\n const metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(\r\n parsedResponse.metadata,\r\n this.hostnameAndPort\r\n );\r\n this.logger.verbose(\"Parsed the cloud discovery metadata.\");\r\n if (metadata) {\r\n this.logger.verbose(\"There is returnable metadata attached to the parsed cloud discovery metadata.\");\r\n return metadata;\r\n } else {\r\n this.logger.verbose(\"There is no metadata attached to the parsed cloud discovery metadata.\");\r\n }\r\n } catch (e) {\r\n this.logger.verbose(\"Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.\");\r\n throw ClientConfigurationError.createInvalidCloudDiscoveryMetadataError();\r\n }\r\n }\r\n\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n this.logger.verbose(\"The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n private async getCloudDiscoveryMetadataFromNetwork(): Promise<CloudDiscoveryMetadata | null> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId);\r\n const instanceDiscoveryEndpoint =\r\n `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\r\n const options: ImdsOptions = {};\r\n\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n\r\n let match = null;\r\n try {\r\n const response =\r\n await this.networkInterface.sendGetRequestAsync<CloudInstanceDiscoveryResponse | CloudInstanceDiscoveryErrorResponse>(\r\n instanceDiscoveryEndpoint,\r\n options\r\n );\r\n\r\n let typedResponseBody: CloudInstanceDiscoveryResponse | CloudInstanceDiscoveryErrorResponse;\r\n let metadata: Array<CloudDiscoveryMetadata>;\r\n if (isCloudInstanceDiscoveryResponse(response.body)) {\r\n typedResponseBody = response.body as CloudInstanceDiscoveryResponse;\r\n metadata = typedResponseBody.metadata;\r\n\r\n this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`);\r\n } else if (isCloudInstanceDiscoveryErrorResponse(response.body)) {\r\n this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`);\r\n\r\n typedResponseBody = response.body as CloudInstanceDiscoveryErrorResponse;\r\n if (typedResponseBody.error === Constants.INVALID_INSTANCE) {\r\n this.logger.error(\"The CloudInstanceDiscoveryErrorResponse error is invalid_instance.\");\r\n return null;\r\n }\r\n\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`);\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`);\r\n\r\n this.logger.warning(\"Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []\");\r\n metadata = [];\r\n } else {\r\n this.logger.error(\"AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse\");\r\n return null;\r\n }\r\n\r\n this.logger.verbose(\"Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(\r\n metadata,\r\n this.hostnameAndPort\r\n );\r\n } catch (error) {\r\n if (error instanceof AuthError) {\r\n this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\\nError: ${error.errorCode}\\nError Description: ${error.errorMessage}`);\r\n } else {\r\n const typedError = error as Error;\r\n this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\\nError: ${typedError.name}\\nError Description: ${typedError.message}`);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\r\n if (!match) {\r\n this.logger.warning(\"The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n this.logger.verbose(\"Creating custom Authority for custom domain scenario.\");\r\n\r\n match = Authority.createCloudDiscoveryMetadataFromHost(\r\n this.hostnameAndPort\r\n );\r\n }\r\n return match;\r\n }\r\n\r\n /**\r\n * Get cloud discovery metadata for common authorities\r\n */\r\n private getCloudDiscoveryMetadataFromHarcodedValues(): CloudDiscoveryMetadata | null {\r\n if (this.canonicalAuthority in InstanceDiscoveryMetadata) {\r\n return InstanceDiscoveryMetadata[this.canonicalAuthority];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n private isInKnownAuthorities(): boolean {\r\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\r\n return UrlString.getDomainFromUrl(authority).toLowerCase() === this.hostnameAndPort;\r\n });\r\n\r\n return matches.length > 0;\r\n }\r\n\r\n /**\r\n * helper function to populate the authority based on azureCloudOptions\r\n * @param authorityString\r\n * @param azureCloudOptions\r\n */\r\n static generateAuthority(authorityString: string, azureCloudOptions?: AzureCloudOptions): string {\r\n let authorityAzureCloudInstance;\r\n\r\n if (azureCloudOptions && azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\r\n const tenant = azureCloudOptions.tenant ? azureCloudOptions.tenant : Constants.DEFAULT_COMMON_TENANT;\r\n authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\r\n }\r\n\r\n return authorityAzureCloudInstance ? authorityAzureCloudInstance : authorityString;\r\n }\r\n\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host\r\n */\r\n static createCloudDiscoveryMetadataFromHost(host: string): CloudDiscoveryMetadata {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host]\r\n };\r\n }\r\n\r\n /**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response\r\n * @param authority\r\n */\r\n static getCloudDiscoveryMetadataFromNetworkResponse(\r\n response: CloudDiscoveryMetadata[],\r\n authority: string\r\n ): CloudDiscoveryMetadata | null {\r\n for (let i = 0; i < response.length; i++) {\r\n const metadata = response[i];\r\n if (metadata.aliases.indexOf(authority) > -1) {\r\n return metadata;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n getPreferredCache(): string {\r\n if(this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host\r\n */\r\n isAlias(host: string): boolean {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n }\r\n\r\n /**\r\n * Checks whether the provided host is that of a public cloud authority\r\n *\r\n * @param authority string\r\n * @returns bool\r\n */\r\n static isPublicCloudAuthority(host: string): boolean {\r\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\r\n }\r\n\r\n /**\r\n * Rebuild the authority string with the region\r\n *\r\n * @param host string\r\n * @param region string\r\n */\r\n static buildRegionalAuthorityString(host: string, region: string, queryString?: string): string {\r\n // Create and validate a Url string object with the initial authority string\r\n const authorityUrlInstance = new UrlString(host);\r\n authorityUrlInstance.validateAsUri();\r\n\r\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\r\n\r\n let hostNameAndPort= `${region}.${authorityUrlParts.HostNameAndPort}`;\r\n\r\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\r\n hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\r\n }\r\n\r\n // Include the query string portion of the url\r\n const url = UrlString.constructAuthorityUriFromObject({\r\n ...authorityUrlInstance.getUrlComponents(),\r\n HostNameAndPort: hostNameAndPort\r\n }).urlString;\r\n\r\n // Add the query string if a query string was provided\r\n if (queryString) return `${url}?${queryString}`;\r\n\r\n return url;\r\n }\r\n\r\n /**\r\n * Replace the endpoints in the metadata object with their regional equivalents.\r\n *\r\n * @param metadata OpenIdConfigResponse\r\n * @param azureRegion string\r\n */\r\n static replaceWithRegionalInformation(metadata: OpenIdConfigResponse, azureRegion: string): OpenIdConfigResponse {\r\n metadata.authorization_endpoint = Authority.buildRegionalAuthorityString(metadata.authorization_endpoint, azureRegion);\r\n // TODO: Enquire on whether we should leave the query string or remove it before releasing the feature\r\n metadata.token_endpoint = Authority.buildRegionalAuthorityString(\r\n metadata.token_endpoint, azureRegion, Constants.REGIONAL_AUTH_NON_MSI_QUERY_STRING\r\n );\r\n\r\n if (metadata.end_session_endpoint) {\r\n metadata.end_session_endpoint = Authority.buildRegionalAuthorityString(metadata.end_session_endpoint, azureRegion);\r\n }\r\n\r\n return metadata;\r\n }\r\n\r\n /**\r\n * Transform CIAM_AUTHORIY as per the below rules:\r\n * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it\r\n *\r\n * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com`\r\n * `ciamlogin.com` can also change in the future and we should accommodate the same\r\n *\r\n * @param authority\r\n */\r\n static transformCIAMAuthority(authority: string): string {\r\n let ciamAuthority = authority.endsWith(Constants.FORWARD_SLASH) ? authority : `${authority}${Constants.FORWARD_SLASH}`;\r\n const authorityUrl = new UrlString(authority);\r\n const authorityUrlComponents = authorityUrl.getUrlComponents();\r\n\r\n // check if transformation is needed\r\n if (authorityUrlComponents.PathSegments.length === 0 && (authorityUrlComponents.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL))){\r\n const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(\".\")[0];\r\n ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`;\r\n }\r\n\r\n return ciamAuthority;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\r\n\r\n/**\r\n * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints.\r\n */\r\nexport type CloudInstanceDiscoveryResponse = {\r\n tenant_discovery_endpoint: string;\r\n metadata: Array<CloudDiscoveryMetadata>;\r\n};\r\n\r\nexport function isCloudInstanceDiscoveryResponse(response: object): boolean {\r\n return (\r\n response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\r\n response.hasOwnProperty(\"metadata\")\r\n );\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints.\r\n */\r\nexport type CloudInstanceDiscoveryErrorResponse = {\r\n error: String;\r\n error_description: String;\r\n error_codes?: Array<Number>;\r\n timestamp?: String;\r\n trace_id?: String;\r\n correlation_id?: String;\r\n error_uri?: String;\r\n};\r\n\r\nexport function isCloudInstanceDiscoveryErrorResponse(response: object): boolean {\r\n return (\r\n response.hasOwnProperty(\"error\") &&\r\n response.hasOwnProperty(\"error_description\")\r\n );\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Authority } from \"./Authority\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\r\nimport { AuthorityOptions } from \"./AuthorityOptions\";\r\nimport { Logger } from \"../logger/Logger\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\r\n\r\nexport class AuthorityFactory {\r\n\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n */\r\n static async createDiscoveredInstance(\r\n authorityUri: string,\r\n networkClient: INetworkModule,\r\n cacheManager: ICacheManager,\r\n authorityOptions: AuthorityOptions,\r\n logger: Logger,\r\n performanceClient?: IPerformanceClient,\r\n correlationId?: string\r\n ): Promise<Authority> {\r\n performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId);\r\n \r\n const authorityUriFinal = Authority.transformCIAMAuthority(authorityUri);\r\n\r\n // Initialize authority and perform discovery endpoint check.\r\n const acquireTokenAuthority: Authority = AuthorityFactory.createInstance(\r\n authorityUriFinal,\r\n networkClient,\r\n cacheManager,\r\n authorityOptions,\r\n logger,\r\n performanceClient,\r\n correlationId\r\n );\r\n\r\n try {\r\n performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityResolveEndpointsAsync, correlationId);\r\n await acquireTokenAuthority.resolveEndpointsAsync();\r\n return acquireTokenAuthority;\r\n } catch (e) {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Does not perform endpoint discovery.\r\n *\r\n * @param authorityUrl\r\n * @param networkInterface\r\n * @param protocolMode\r\n */\r\n static createInstance(\r\n authorityUrl: string,\r\n networkInterface: INetworkModule,\r\n cacheManager: ICacheManager,\r\n authorityOptions: AuthorityOptions,\r\n logger: Logger,\r\n performanceClient?: IPerformanceClient,\r\n correlationId?: string\r\n ): Authority {\r\n // Throw error if authority url is empty\r\n if (StringUtils.isEmpty(authorityUrl)) {\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n\r\n return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions, logger, performanceClient, correlationId);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { SERVER_TELEM_CONSTANTS, Separators, CacheOutcome, Constants, RegionDiscoverySources, RegionDiscoveryOutcomes } from \"../../utils/Constants\";\r\nimport { CacheManager } from \"../../cache/CacheManager\";\r\nimport { AuthError } from \"../../error/AuthError\";\r\nimport { ServerTelemetryRequest } from \"./ServerTelemetryRequest\";\r\nimport { ServerTelemetryEntity } from \"../../cache/entities/ServerTelemetryEntity\";\r\nimport { StringUtils } from \"../../utils/StringUtils\";\r\nimport { RegionDiscoveryMetadata } from \"../../authority/RegionDiscoveryMetadata\";\r\n\r\nexport class ServerTelemetryManager {\r\n private cacheManager: CacheManager;\r\n private apiId: number;\r\n private correlationId: string;\r\n private telemetryCacheKey: string;\r\n private wrapperSKU: String;\r\n private wrapperVer: String;\r\n private regionUsed: string | undefined;\r\n private regionSource: RegionDiscoverySources | undefined;\r\n private regionOutcome: RegionDiscoveryOutcomes | undefined;\r\n private cacheOutcome: CacheOutcome = CacheOutcome.NO_CACHE_HIT;\r\n\r\n constructor(telemetryRequest: ServerTelemetryRequest, cacheManager: CacheManager) {\r\n this.cacheManager = cacheManager;\r\n this.apiId = telemetryRequest.apiId;\r\n this.correlationId = telemetryRequest.correlationId;\r\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\r\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\r\n\r\n this.telemetryCacheKey = SERVER_TELEM_CONSTANTS.CACHE_KEY + Separators.CACHE_KEY_SEPARATOR + telemetryRequest.clientId;\r\n }\r\n\r\n /**\r\n * API to add MSER Telemetry to request\r\n */\r\n generateCurrentRequestHeaderValue(): string {\r\n const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`;\r\n const platformFields = [this.wrapperSKU, this.wrapperVer].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const regionDiscoveryFields = this.getRegionDiscoveryFields();\r\n const requestWithRegionDiscoveryFields = [request, regionDiscoveryFields].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, requestWithRegionDiscoveryFields, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n\r\n /**\r\n * API to add MSER Telemetry for the last failed request\r\n */\r\n generateLastRequestHeaderValue(): string {\r\n const lastRequests = this.getLastRequests();\r\n\r\n const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const failedRequests = lastRequests.failedRequests.slice(0, 2*maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errors = lastRequests.errors.slice(0, maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errorCount = lastRequests.errors.length;\r\n\r\n // Indicate whether this header contains all data or partial data\r\n const overflow = maxErrors < errorCount ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\r\n const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, lastRequests.cacheHits, failedRequests, errors, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n\r\n /**\r\n * API to cache token failures for MSER data capture\r\n * @param error\r\n */\r\n cacheFailedRequest(error: AuthError): void {\r\n const lastRequests = this.getLastRequests();\r\n if (lastRequests.errors.length >= SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\r\n // Remove a cached error to make room, first in first out\r\n lastRequests.failedRequests.shift(); // apiId\r\n lastRequests.failedRequests.shift(); // correlationId\r\n lastRequests.errors.shift();\r\n }\r\n \r\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\r\n\r\n if (!StringUtils.isEmpty(error.subError)) {\r\n lastRequests.errors.push(error.subError);\r\n } else if (!StringUtils.isEmpty(error.errorCode)) {\r\n lastRequests.errors.push(error.errorCode);\r\n } else if (!!error && error.toString()) {\r\n lastRequests.errors.push(error.toString());\r\n } else {\r\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\r\n }\r\n\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Update server telemetry cache entry by incrementing cache hit counter\r\n */\r\n incrementCacheHits(): number {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.cacheHits += 1;\r\n\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return lastRequests.cacheHits;\r\n }\r\n\r\n /**\r\n * Get the server telemetry entity from cache or initialize a new one\r\n */\r\n getLastRequests(): ServerTelemetryEntity {\r\n const initialValue: ServerTelemetryEntity = new ServerTelemetryEntity();\r\n const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey) as ServerTelemetryEntity;\r\n\r\n return lastRequests || initialValue;\r\n }\r\n\r\n /**\r\n * Remove server telemetry cache entry\r\n */\r\n clearTelemetryCache(): void {\r\n const lastRequests = this.getLastRequests();\r\n const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const errorCount = lastRequests.errors.length;\r\n if (numErrorsFlushed === errorCount) {\r\n // All errors were sent on last request, clear Telemetry cache\r\n this.cacheManager.removeItem(this.telemetryCacheKey);\r\n } else {\r\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\r\n const serverTelemEntity = new ServerTelemetryEntity();\r\n serverTelemEntity.failedRequests = lastRequests.failedRequests.slice(numErrorsFlushed*2); // failedRequests contains 2 items for each error\r\n serverTelemEntity.errors = lastRequests.errors.slice(numErrorsFlushed);\r\n\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the maximum number of errors that can be flushed to the server in the next network request\r\n * @param serverTelemetryEntity\r\n */\r\n static maxErrorsToSend(serverTelemetryEntity: ServerTelemetryEntity): number {\r\n let i;\r\n let maxErrors = 0;\r\n let dataSize = 0;\r\n const errorCount = serverTelemetryEntity.errors.length;\r\n for (i = 0; i < errorCount; i++) {\r\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\r\n const apiId = serverTelemetryEntity.failedRequests[2*i] || Constants.EMPTY_STRING;\r\n const correlationId = serverTelemetryEntity.failedRequests[2*i + 1] || Constants.EMPTY_STRING;\r\n const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\r\n\r\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\r\n dataSize += apiId.toString().length + correlationId.toString().length + errorCode.length + 3;\r\n\r\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\r\n // Adding this entry to the header would still keep header size below the limit\r\n maxErrors += 1;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n return maxErrors;\r\n }\r\n\r\n /**\r\n * Get the region discovery fields\r\n * \r\n * @returns string\r\n */\r\n getRegionDiscoveryFields(): string {\r\n const regionDiscoveryFields: string[] = [];\r\n\r\n regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING);\r\n\r\n return regionDiscoveryFields.join(\",\");\r\n }\r\n\r\n /**\r\n * Update the region discovery metadata\r\n * \r\n * @param regionDiscoveryMetadata\r\n * @returns void\r\n */\r\n updateRegionDiscoveryMetadata(regionDiscoveryMetadata: RegionDiscoveryMetadata): void {\r\n this.regionUsed = regionDiscoveryMetadata.region_used;\r\n this.regionSource = regionDiscoveryMetadata.region_source;\r\n this.regionOutcome = regionDiscoveryMetadata.region_outcome;\r\n }\r\n\r\n /**\r\n * Set cache outcome \r\n */\r\n setCacheOutcome(cacheOutcome: CacheOutcome): void {\r\n this.cacheOutcome = cacheOutcome;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ICrypto, INetworkModule, Logger, AuthenticationResult, AccountInfo, AccountEntity, BaseAuthRequest, AuthenticationScheme, UrlString, ServerTelemetryManager, ServerTelemetryRequest, ClientConfigurationError, StringUtils, Authority, AuthorityOptions, AuthorityFactory, IPerformanceClient, PerformanceEvents } from \"@azure/msal-common\";\r\nimport { BrowserConfiguration } from \"../config/Configuration\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { EventHandler } from \"../event/EventHandler\";\r\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\r\nimport { version } from \"../packageMetadata\";\r\nimport { BrowserConstants } from \"../utils/BrowserConstants\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\r\n\r\nexport abstract class BaseInteractionClient {\r\n\r\n protected config: BrowserConfiguration;\r\n protected browserStorage: BrowserCacheManager;\r\n protected browserCrypto: ICrypto;\r\n protected networkClient: INetworkModule;\r\n protected logger: Logger;\r\n protected eventHandler: EventHandler;\r\n protected navigationClient: INavigationClient;\r\n protected nativeMessageHandler: NativeMessageHandler | undefined;\r\n protected correlationId: string;\r\n protected performanceClient: IPerformanceClient;\r\n\r\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\r\n this.config = config;\r\n this.browserStorage = storageImpl;\r\n this.browserCrypto = browserCrypto;\r\n this.networkClient = this.config.system.networkClient;\r\n this.eventHandler = eventHandler;\r\n this.navigationClient = navigationClient;\r\n this.nativeMessageHandler = nativeMessageHandler;\r\n this.correlationId = correlationId || this.browserCrypto.createNewGuid();\r\n this.logger = logger.clone(BrowserConstants.MSAL_SKU, version, this.correlationId);\r\n this.performanceClient = performanceClient;\r\n }\r\n\r\n abstract acquireToken(request: RedirectRequest|PopupRequest|SsoSilentRequest): Promise<AuthenticationResult|void>;\r\n\r\n abstract logout(request: EndSessionRequest): Promise<void>;\r\n\r\n protected async clearCacheOnLogout(account?: AccountInfo| null): Promise<void> {\r\n if (account) {\r\n if (AccountEntity.accountInfoIsEqual(account, this.browserStorage.getActiveAccount(), false)) {\r\n this.logger.verbose(\"Setting active account to null\");\r\n this.browserStorage.setActiveAccount(null);\r\n }\r\n // Clear given account.\r\n try {\r\n await this.browserStorage.removeAccount(AccountEntity.generateAccountCacheKey(account));\r\n this.logger.verbose(\"Cleared cache items belonging to the account provided in the logout request.\");\r\n } catch (error) {\r\n this.logger.error(\"Account provided in logout request was not found. Local cache unchanged.\");\r\n }\r\n } else {\r\n try {\r\n this.logger.verbose(\"No account provided in logout request, clearing all cache items.\", this.correlationId);\r\n // Clear all accounts and tokens\r\n await this.browserStorage.clear();\r\n // Clear any stray keys from IndexedDB\r\n await this.browserCrypto.clearKeystore();\r\n } catch(e) {\r\n this.logger.error(\"Attempted to clear all MSAL cache items and failed. Local cache unchanged.\");\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Initializer function for all request APIs\r\n * @param request\r\n */\r\n protected async initializeBaseRequest(request: Partial<BaseAuthRequest>, account?: AccountInfo): Promise<BaseAuthRequest> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.InitializeBaseRequest, request.correlationId);\r\n this.logger.verbose(\"Initializing BaseAuthRequest\");\r\n const authority = request.authority || this.config.auth.authority;\r\n\r\n if (account) {\r\n await this.validateRequestAuthority(authority, account);\r\n }\r\n\r\n const scopes = [...((request && request.scopes) || [])];\r\n\r\n const validatedRequest: BaseAuthRequest = {\r\n ...request,\r\n correlationId: this.correlationId,\r\n authority,\r\n scopes\r\n };\r\n\r\n // Set authenticationScheme to BEARER if not explicitly set in the request\r\n if (!validatedRequest.authenticationScheme) {\r\n validatedRequest.authenticationScheme = AuthenticationScheme.BEARER;\r\n this.logger.verbose(\"Authentication Scheme wasn't explicitly set in request, defaulting to \\\"Bearer\\\" request\");\r\n } else {\r\n if (validatedRequest.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (!request.sshJwk) {\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n if(!request.sshKid) {\r\n throw ClientConfigurationError.createMissingSshKidError();\r\n }\r\n }\r\n this.logger.verbose(`Authentication Scheme set to \"${validatedRequest.authenticationScheme}\" as configured in Auth request`);\r\n }\r\n\r\n // Set requested claims hash if claims were requested and claims-based caching is enabled\r\n if (this.config.cache.claimsBasedCachingEnabled && request.claims && !StringUtils.isEmptyObj(request.claims)) {\r\n validatedRequest.requestedClaimsHash = await this.browserCrypto.hashString(request.claims);\r\n }\r\n\r\n return validatedRequest;\r\n }\r\n\r\n /**\r\n *\r\n * Use to get the redirect uri configured in MSAL or null.\r\n * @param requestRedirectUri\r\n * @returns Redirect URL\r\n *\r\n */\r\n getRedirectUri(requestRedirectUri?: string): string {\r\n this.logger.verbose(\"getRedirectUri called\");\r\n const redirectUri = requestRedirectUri || this.config.auth.redirectUri || BrowserUtils.getCurrentUri();\r\n return UrlString.getAbsoluteUrl(redirectUri, BrowserUtils.getCurrentUri());\r\n }\r\n\r\n /*\r\n * If authority provided in the request does not match environment/authority specified \r\n * in the account or MSAL config, we throw an error.\r\n */\r\n async validateRequestAuthority(authority: string, account: AccountInfo): Promise<void> {\r\n const discoveredAuthority = await this.getDiscoveredAuthority(authority);\r\n \r\n if(!discoveredAuthority.isAlias(account.environment)) {\r\n throw ClientConfigurationError.createAuthorityMismatchError();\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param apiId\r\n * @param correlationId\r\n * @param forceRefresh\r\n */\r\n protected initializeServerTelemetryManager(apiId: number, forceRefresh?: boolean): ServerTelemetryManager {\r\n this.logger.verbose(\"initializeServerTelemetryManager called\");\r\n const telemetryPayload: ServerTelemetryRequest = {\r\n clientId: this.config.auth.clientId,\r\n correlationId: this.correlationId,\r\n apiId: apiId,\r\n forceRefresh: forceRefresh || false,\r\n wrapperSKU: this.browserStorage.getWrapperMetadata()[0],\r\n wrapperVer: this.browserStorage.getWrapperMetadata()[1]\r\n };\r\n\r\n return new ServerTelemetryManager(telemetryPayload, this.browserStorage);\r\n }\r\n\r\n /**\r\n * Used to get a discovered version of the default authority.\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n protected async getDiscoveredAuthority(requestAuthority?: string): Promise<Authority> {\r\n this.logger.verbose(\"getDiscoveredAuthority called\");\r\n const authorityOptions: AuthorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata\r\n };\r\n\r\n if (requestAuthority) {\r\n this.logger.verbose(\"Creating discovered authority with request authority\");\r\n return await AuthorityFactory.createDiscoveredInstance(requestAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger);\r\n }\r\n\r\n this.logger.verbose(\"Creating discovered authority with configured authority\");\r\n return await AuthorityFactory.createDiscoveredInstance(this.config.auth.authority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ServerTelemetryManager, CommonAuthorizationCodeRequest, Constants, AuthorizationCodeClient, ClientConfiguration, AuthorityOptions, Authority, AuthorityFactory, ServerAuthorizationCodeResponse, UrlString, CommonEndSessionRequest, ProtocolUtils, ResponseMode, StringUtils, IdTokenClaims, AccountInfo, AzureCloudOptions, PerformanceEvents, AuthError} from \"@azure/msal-common\";\r\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\r\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\r\nimport { BrowserConstants, InteractionType } from \"../utils/BrowserConstants\";\r\nimport { version } from \"../packageMetadata\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { BrowserProtocolUtils, BrowserStateObject } from \"../utils/BrowserProtocolUtils\";\r\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\r\n\r\n/**\r\n * Defines the class structure and helper functions used by the \"standard\", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))\r\n */\r\nexport abstract class StandardInteractionClient extends BaseInteractionClient {\r\n /**\r\n * Generates an auth code request tied to the url request.\r\n * @param request\r\n */\r\n protected async initializeAuthorizationCodeRequest(request: AuthorizationUrlRequest): Promise<CommonAuthorizationCodeRequest> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, request.correlationId);\r\n this.logger.verbose(\"initializeAuthorizationRequest called\", request.correlationId);\r\n const generatedPkceParams = await this.browserCrypto.generatePkceCodes();\r\n\r\n const authCodeRequest: CommonAuthorizationCodeRequest = {\r\n ...request,\r\n redirectUri: request.redirectUri,\r\n code: Constants.EMPTY_STRING,\r\n codeVerifier: generatedPkceParams.verifier\r\n };\r\n\r\n request.codeChallenge = generatedPkceParams.challenge;\r\n request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;\r\n\r\n return authCodeRequest;\r\n }\r\n\r\n /**\r\n * Initializer for the logout request.\r\n * @param logoutRequest\r\n */\r\n protected initializeLogoutRequest(logoutRequest?: EndSessionRequest): CommonEndSessionRequest {\r\n this.logger.verbose(\"initializeLogoutRequest called\", logoutRequest?.correlationId);\r\n\r\n const validLogoutRequest: CommonEndSessionRequest = {\r\n correlationId: this.correlationId || this.browserCrypto.createNewGuid(),\r\n ...logoutRequest\r\n };\r\n\r\n /**\r\n * Set logout_hint to be login_hint from ID Token Claims if present\r\n * and logoutHint attribute wasn't manually set in logout request\r\n */\r\n if (logoutRequest) {\r\n // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims\r\n if (!logoutRequest.logoutHint) {\r\n if(logoutRequest.account) {\r\n const logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account);\r\n if (logoutHint) {\r\n this.logger.verbose(\"Setting logoutHint to login_hint ID Token Claim value for the account provided\");\r\n validLogoutRequest.logoutHint = logoutHint;\r\n }\r\n } else {\r\n this.logger.verbose(\"logoutHint was not set and account was not passed into logout request, logoutHint will not be set\");\r\n }\r\n } else {\r\n this.logger.verbose(\"logoutHint has already been set in logoutRequest\");\r\n }\r\n } else {\r\n this.logger.verbose(\"logoutHint will not be set since no logout request was configured\");\r\n }\r\n\r\n /*\r\n * Only set redirect uri if logout request isn't provided or the set uri isn't null.\r\n * Otherwise, use passed uri, config, or current page.\r\n */\r\n if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {\r\n if (logoutRequest && logoutRequest.postLogoutRedirectUri) {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to uri set on logout request\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\r\n } else if (this.config.auth.postLogoutRedirectUri === null) {\r\n this.logger.verbose(\"postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect\", validLogoutRequest.correlationId);\r\n } else if (this.config.auth.postLogoutRedirectUri) {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to configured uri\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\r\n } else {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to current page\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(BrowserUtils.getCurrentUri(), BrowserUtils.getCurrentUri());\r\n }\r\n } else {\r\n this.logger.verbose(\"postLogoutRedirectUri passed as null, not setting post logout redirect uri\", validLogoutRequest.correlationId);\r\n }\r\n\r\n return validLogoutRequest;\r\n }\r\n\r\n /**\r\n * Parses login_hint ID Token Claim out of AccountInfo object to be used as\r\n * logout_hint in end session request.\r\n * @param account\r\n */\r\n protected getLogoutHintFromIdTokenClaims(account: AccountInfo): string | null {\r\n const idTokenClaims: IdTokenClaims | undefined = account.idTokenClaims;\r\n if (idTokenClaims) {\r\n if (idTokenClaims.login_hint) {\r\n return idTokenClaims.login_hint;\r\n } else {\r\n this.logger.verbose(\"The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request\");\r\n }\r\n } else {\r\n this.logger.verbose(\"The provided account does not contain ID Token Claims, logoutHint will not be added to logout request\");\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Creates an Authorization Code Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n protected async createAuthCodeClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<AuthorizationCodeClient> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.correlationId);\r\n // Create auth module.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);\r\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, requestAzureCloudOptions);\r\n return new AuthorizationCodeClient(clientConfig, this.performanceClient);\r\n }\r\n\r\n /**\r\n * Creates a Client Configuration object with the given request authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n protected async getClientConfiguration(serverTelemetryManager: ServerTelemetryManager, requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<ClientConfiguration> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);\r\n this.logger.verbose(\"getClientConfiguration called\", this.correlationId);\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\r\n const discoveredAuthority = await this.getDiscoveredAuthority(requestAuthority, requestAzureCloudOptions);\r\n const logger= this.config.system.loggerOptions;\r\n\r\n return {\r\n authOptions: {\r\n clientId: this.config.auth.clientId,\r\n authority: discoveredAuthority,\r\n clientCapabilities: this.config.auth.clientCapabilities\r\n },\r\n systemOptions: {\r\n tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds,\r\n preventCorsPreflight: true\r\n },\r\n loggerOptions: {\r\n loggerCallback: logger.loggerCallback,\r\n piiLoggingEnabled: logger.piiLoggingEnabled,\r\n logLevel: logger.logLevel,\r\n correlationId: this.correlationId\r\n },\r\n cacheOptions: {\r\n claimsBasedCachingEnabled: this.config.cache.claimsBasedCachingEnabled\r\n },\r\n cryptoInterface: this.browserCrypto,\r\n networkInterface: this.networkClient,\r\n storageInterface: this.browserStorage,\r\n serverTelemetryManager: serverTelemetryManager,\r\n libraryInfo: {\r\n sku: BrowserConstants.MSAL_SKU,\r\n version: version,\r\n cpu: Constants.EMPTY_STRING,\r\n os: Constants.EMPTY_STRING\r\n },\r\n telemetry: this.config.telemetry\r\n };\r\n }\r\n \r\n /**\r\n * @param hash\r\n * @param interactionType\r\n */\r\n protected validateAndExtractStateFromHash(serverParams: ServerAuthorizationCodeResponse, interactionType: InteractionType, requestCorrelationId?: string): string {\r\n this.logger.verbose(\"validateAndExtractStateFromHash called\", requestCorrelationId);\r\n if (!serverParams.state) {\r\n throw BrowserAuthError.createHashDoesNotContainStateError();\r\n }\r\n\r\n const platformStateObj = BrowserProtocolUtils.extractBrowserRequestState(this.browserCrypto, serverParams.state);\r\n if (!platformStateObj) {\r\n throw BrowserAuthError.createUnableToParseStateError();\r\n }\r\n\r\n if (platformStateObj.interactionType !== interactionType) {\r\n throw BrowserAuthError.createStateInteractionTypeMismatchError();\r\n }\r\n\r\n this.logger.verbose(\"Returning state from hash\", requestCorrelationId);\r\n return serverParams.state;\r\n }\r\n\r\n /**\r\n * Used to get a discovered version of the default authority.\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n protected async getDiscoveredAuthority(requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<Authority> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\r\n this.logger.verbose(\"getDiscoveredAuthority called\", this.correlationId);\r\n const getAuthorityMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\r\n const authorityOptions: AuthorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata,\r\n skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache\r\n };\r\n\r\n // build authority string based on auth params, precedence - azureCloudInstance + tenant >> authority\r\n const userAuthority = requestAuthority ? requestAuthority : this.config.auth.authority;\r\n\r\n // fall back to the authority from config\r\n const builtAuthority = Authority.generateAuthority(userAuthority, requestAzureCloudOptions || this.config.auth.azureCloudOptions);\r\n this.logger.verbose(\"Creating discovered authority with configured authority\", this.correlationId);\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, this.correlationId);\r\n return await AuthorityFactory.createDiscoveredInstance(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger, this.performanceClient, this.correlationId)\r\n .then((result: Authority) => {\r\n getAuthorityMeasurement.endMeasurement({\r\n success: true,\r\n });\r\n\r\n return result;\r\n })\r\n .catch((error:AuthError) => {\r\n getAuthorityMeasurement.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n\r\n throw error;\r\n });\r\n }\r\n\r\n /**\r\n * Helper to initialize required request parameters for interactive APIs and ssoSilent()\r\n * @param request\r\n * @param interactionType\r\n */\r\n protected async initializeAuthorizationRequest(request: RedirectRequest|PopupRequest|SsoSilentRequest, interactionType: InteractionType): Promise<AuthorizationUrlRequest> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.correlationId);\r\n this.logger.verbose(\"initializeAuthorizationRequest called\", this.correlationId);\r\n const redirectUri = this.getRedirectUri(request.redirectUri);\r\n const browserState: BrowserStateObject = {\r\n interactionType: interactionType\r\n };\r\n const state = ProtocolUtils.setRequestState(\r\n this.browserCrypto,\r\n (request && request.state)|| Constants.EMPTY_STRING,\r\n browserState\r\n );\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeBaseRequest, this.correlationId);\r\n const validatedRequest: AuthorizationUrlRequest = {\r\n ...await this.initializeBaseRequest(request),\r\n redirectUri: redirectUri,\r\n state: state,\r\n nonce: request.nonce || this.browserCrypto.createNewGuid(),\r\n responseMode: ResponseMode.FRAGMENT\r\n };\r\n\r\n const account = request.account || this.browserStorage.getActiveAccount();\r\n if (account) {\r\n this.logger.verbose(\"Setting validated request account\", this.correlationId);\r\n this.logger.verbosePii(`Setting validated request account: ${account.homeAccountId}`, this.correlationId);\r\n validatedRequest.account = account;\r\n }\r\n\r\n // Check for ADAL/MSAL v1 SSO\r\n if (StringUtils.isEmpty(validatedRequest.loginHint) && !account) {\r\n const legacyLoginHint = this.browserStorage.getLegacyLoginHint();\r\n if (legacyLoginHint) {\r\n validatedRequest.loginHint = legacyLoginHint;\r\n }\r\n }\r\n\r\n return validatedRequest;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { BaseClient } from \"./BaseClient\";\r\nimport { CommonRefreshTokenRequest } from \"../request/CommonRefreshTokenRequest\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\r\nimport { GrantType, AuthenticationScheme, Errors, HeaderNames } from \"../utils/Constants\";\r\nimport { ResponseHandler } from \"../response/ResponseHandler\";\r\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\r\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\r\nimport { NetworkResponse } from \"../network/NetworkManager\";\r\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { ServerError } from \"../error/ServerError\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { UrlString } from \"../url/UrlString\";\r\nimport { CcsCredentialType } from \"../account/CcsCredential\";\r\nimport { buildClientInfoFromHomeAccountId } from \"../account/ClientInfo\";\r\nimport { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage } from \"../error/InteractionRequiredAuthError\";\r\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\n/**\r\n * OAuth2.0 refresh token client\r\n */\r\nexport class RefreshTokenClient extends BaseClient {\r\n constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient) {\r\n super(configuration, performanceClient);\r\n\r\n }\r\n public async acquireToken(request: CommonRefreshTokenRequest): Promise<AuthenticationResult> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\r\n\r\n const atsMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\r\n this.logger.verbose(\"RefreshTokenClientAcquireToken called\", request.correlationId);\r\n const reqTimestamp = TimeUtils.nowSeconds();\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\r\n const response = await this.executeTokenRequest(request, this.authority);\r\n const httpVerToken = response.headers?.[HeaderNames.X_MS_HTTP_VERSION];\r\n atsMeasurement?.addStaticFields({\r\n refreshTokenSize: response.body.refresh_token?.length || 0,\r\n });\r\n if(httpVerToken)\r\n {\r\n atsMeasurement?.addStaticFields({\r\n httpVerToken,\r\n });\r\n }\r\n\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const responseHandler = new ResponseHandler(\r\n this.config.authOptions.clientId,\r\n this.cacheManager,\r\n this.cryptoUtils,\r\n this.logger,\r\n this.config.serializableCache,\r\n this.config.persistencePlugin\r\n );\r\n responseHandler.validateTokenResponse(response.body);\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.HandleServerTokenResponse, request.correlationId);\r\n return responseHandler.handleServerTokenResponse(\r\n response.body,\r\n this.authority,\r\n reqTimestamp,\r\n request,\r\n undefined,\r\n undefined,\r\n true,\r\n request.forceCache,\r\n requestId\r\n ).then((result: AuthenticationResult) => {\r\n atsMeasurement?.endMeasurement({\r\n success: true\r\n });\r\n return result;\r\n })\r\n .catch((error) => {\r\n this.logger.verbose(\"Error in fetching refresh token\", request.correlationId);\r\n atsMeasurement?.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n throw error;\r\n });\r\n }\r\n\r\n /**\r\n * Gets cached refresh token and attaches to request, then calls acquireToken API\r\n * @param request\r\n */\r\n public async acquireTokenByRefreshToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);\r\n\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n\r\n // try checking if FOCI is enabled for the given application\r\n const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment);\r\n\r\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\r\n if (isFOCI) {\r\n try {\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n return this.acquireTokenWithCachedRefreshToken(request, true);\r\n } catch (e) {\r\n const noFamilyRTInCache = e instanceof InteractionRequiredAuthError && e.errorCode === InteractionRequiredAuthErrorMessage.noTokensFoundError.code;\r\n const clientMismatchErrorWithFamilyRT = e instanceof ServerError && e.errorCode === Errors.INVALID_GRANT_ERROR && e.subError === Errors.CLIENT_MISMATCH_ERROR;\r\n\r\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\r\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n return this.acquireTokenWithCachedRefreshToken(request, false);\r\n // throw in all other cases\r\n } else {\r\n throw e;\r\n }\r\n }\r\n }\r\n // fall back to application refresh token acquisition\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n return this.acquireTokenWithCachedRefreshToken(request, false);\r\n\r\n }\r\n\r\n /**\r\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\r\n * @param request\r\n */\r\n private async acquireTokenWithCachedRefreshToken(request: CommonSilentFlowRequest, foci: boolean) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n\r\n // fetches family RT or application RT based on FOCI value\r\n\r\n const atsMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n this.logger.verbose(\"RefreshTokenClientAcquireTokenWithCachedRefreshToken called\", request.correlationId);\r\n const refreshToken = this.cacheManager.getRefreshToken(request.account, foci);\r\n\r\n if (!refreshToken) {\r\n atsMeasurement?.discardMeasurement();\r\n throw InteractionRequiredAuthError.createNoTokensFoundError();\r\n }\r\n // attach cached RT size to the current measurement\r\n atsMeasurement?.endMeasurement({\r\n success: true\r\n });\r\n\r\n const refreshTokenRequest: CommonRefreshTokenRequest = {\r\n ...request,\r\n refreshToken: refreshToken.secret,\r\n authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER,\r\n ccsCredential: {\r\n credential: request.account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n }\r\n };\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\r\n return this.acquireToken(refreshTokenRequest);\r\n }\r\n\r\n /**\r\n * Constructs the network message and makes a NW call to the underlying secure token service\r\n * @param request\r\n * @param authority\r\n */\r\n private async executeTokenRequest(request: CommonRefreshTokenRequest, authority: Authority)\r\n : Promise<NetworkResponse<ServerAuthorizationTokenResponse>> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\r\n const acquireTokenMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId);\r\n \r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n \r\n const requestBody = await this.createTokenRequestBody(request);\r\n const headers: Record<string, string> = this.createTokenRequestHeaders(request.ccsCredential);\r\n const thumbprint: RequestThumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n\r\n return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint)\r\n .then((result) => {\r\n acquireTokenMeasurement?.endMeasurement({\r\n success: true\r\n });\r\n return result;\r\n })\r\n .catch((error) => {\r\n acquireTokenMeasurement?.endMeasurement({\r\n success: false\r\n });\r\n throw error;\r\n });\r\n }\r\n\r\n /**\r\n * Helper function to create the token request body\r\n * @param request\r\n */\r\n private async createTokenRequestBody(request: CommonRefreshTokenRequest): Promise<string> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId);\r\n\r\n const correlationId = request.correlationId;\r\n const acquireTokenMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.BaseClientCreateTokenRequestHeaders, correlationId);\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n\r\n parameterBuilder.addScopes(request.scopes);\r\n\r\n parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);\r\n\r\n parameterBuilder.addClientInfo();\r\n\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n\r\n if (this.serverTelemetryManager) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n\r\n parameterBuilder.addCorrelationId(correlationId);\r\n\r\n parameterBuilder.addRefreshToken(request.refreshToken);\r\n\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\r\n const reqCnfData = await popTokenGenerator.generateCnf(request);\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n parameterBuilder.addPopToken(reqCnfData.reqCnfString);\r\n } else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n } else {\r\n acquireTokenMeasurement?.endMeasurement({\r\n success: false\r\n });\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n }\r\n\r\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n\r\n if (this.config.systemOptions.preventCorsPreflight && request.ccsCredential) {\r\n switch (request.ccsCredential.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n } catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(request.ccsCredential.credential);\r\n break;\r\n }\r\n }\r\n acquireTokenMeasurement?.endMeasurement({\r\n success: true\r\n });\r\n return parameterBuilder.createQueryString();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BaseClient } from \"./BaseClient\";\r\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest\";\r\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\r\nimport { AuthToken } from \"../account/AuthToken\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { RefreshTokenClient } from \"./RefreshTokenClient\";\r\nimport { ClientAuthError, ClientAuthErrorMessage } from \"../error/ClientAuthError\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ResponseHandler } from \"../response/ResponseHandler\";\r\nimport { CacheRecord } from \"../cache/entities/CacheRecord\";\r\nimport { CacheOutcome } from \"../utils/Constants\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\n\r\nexport class SilentFlowClient extends BaseClient {\r\n \r\n constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient) {\r\n super(configuration,performanceClient);\r\n }\r\n \r\n /**\r\n * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew\r\n * the given token and returns the renewed token\r\n * @param request\r\n */\r\n async acquireToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\r\n try {\r\n return await this.acquireCachedToken(request);\r\n } catch (e) {\r\n if (e instanceof ClientAuthError && e.errorCode === ClientAuthErrorMessage.tokenRefreshRequired.code) {\r\n const refreshTokenClient = new RefreshTokenClient(this.config, this.performanceClient);\r\n return refreshTokenClient.acquireTokenByRefreshToken(request);\r\n } else {\r\n throw e;\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Retrieves token from cache or throws an error if it must be refreshed.\r\n * @param request\r\n */\r\n async acquireCachedToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n\r\n if (request.forceRefresh) {\r\n // Must refresh due to present force_refresh flag.\r\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.FORCE_REFRESH);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Skipping cache because forceRefresh is true.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n } else if (!this.config.cacheOptions.claimsBasedCachingEnabled && !StringUtils.isEmptyObj(request.claims)) {\r\n // Must refresh due to presence of claims in request preventing cache lookup\r\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.CLAIMS_REQUESTED_CACHE_SKIPPED);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Skipping cache because claims-based caching is disabled and claims were requested.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n\r\n const environment = request.authority || this.authority.getPreferredCache();\r\n\r\n const cacheRecord = this.cacheManager.readCacheRecord(request.account, request, environment);\r\n\r\n if (!cacheRecord.accessToken) {\r\n // Must refresh due to non-existent access_token.\r\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n } else if (\r\n TimeUtils.wasClockTurnedBack(cacheRecord.accessToken.cachedAt) ||\r\n TimeUtils.isTokenExpired(cacheRecord.accessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)\r\n ) {\r\n // Must refresh due to expired access_token.\r\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED);\r\n this.logger.info(`SilentFlowClient:acquireCachedToken - Cached access token is expired or will expire within ${this.config.systemOptions.tokenRenewalOffsetSeconds} seconds.`);\r\n throw ClientAuthError.createRefreshRequiredError();\r\n } else if (cacheRecord.accessToken.refreshOn && TimeUtils.isTokenExpired(cacheRecord.accessToken.refreshOn, 0)) {\r\n // Must refresh due to the refresh_in value.\r\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.REFRESH_CACHED_ACCESS_TOKEN);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n\r\n return await this.generateResultFromCacheRecord(cacheRecord, request);\r\n }\r\n\r\n /**\r\n * Helper function to build response object from the CacheRecord\r\n * @param cacheRecord\r\n */\r\n private async generateResultFromCacheRecord(cacheRecord: CacheRecord, request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\r\n let idTokenObj: AuthToken | undefined;\r\n if (cacheRecord.idToken) {\r\n idTokenObj = new AuthToken(cacheRecord.idToken.secret, this.config.cryptoInterface);\r\n }\r\n\r\n // token max_age check\r\n if (request.maxAge || (request.maxAge === 0)) {\r\n const authTime = idTokenObj?.claims.auth_time;\r\n if (!authTime) {\r\n throw ClientAuthError.createAuthTimeNotFoundError();\r\n }\r\n\r\n AuthToken.checkMaxAge(authTime, request.maxAge);\r\n }\r\n\r\n return await ResponseHandler.generateAuthenticationResult(\r\n this.cryptoUtils,\r\n this.authority,\r\n cacheRecord,\r\n true,\r\n request,\r\n idTokenObj\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\r\nimport { CommonSilentFlowRequest, AuthenticationResult, SilentFlowClient, ServerTelemetryManager, AccountInfo, AzureCloudOptions, PerformanceEvents, AuthError } from \"@azure/msal-common\";\r\nimport { SilentRequest } from \"../request/SilentRequest\";\r\nimport { ApiId } from \"../utils/BrowserConstants\";\r\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\r\n\r\nexport class SilentCacheClient extends StandardInteractionClient {\r\n /**\r\n * Returns unexpired tokens from the cache, if available\r\n * @param silentRequest\r\n */\r\n async acquireToken(silentRequest: CommonSilentFlowRequest): Promise<AuthenticationResult> {\r\n const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentCacheClientAcquireToken, silentRequest.correlationId);\r\n // Telemetry manager only used to increment cacheHits here\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\r\n\r\n const silentAuthClient = await this.createSilentFlowClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\r\n this.logger.verbose(\"Silent auth client created\");\r\n\r\n try {\r\n const cachedToken = await silentAuthClient.acquireCachedToken(silentRequest);\r\n\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: true\r\n });\r\n return cachedToken;\r\n } catch (error) {\r\n if (error instanceof BrowserAuthError && error.errorCode === BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code) {\r\n this.logger.verbose(\"Signing keypair for bound access token not found. Refreshing bound access token and generating a new crypto keypair.\");\r\n }\r\n acquireTokenMeasurement.endMeasurement({\r\n errorCode: error instanceof AuthError && error.errorCode || undefined,\r\n subErrorCode: error instanceof AuthError && error.subError || undefined,\r\n success: false\r\n });\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Currently Unsupported\r\n */\r\n logout(): Promise<void> {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n }\r\n\r\n /**\r\n * Creates an Silent Flow Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n protected async createSilentFlowClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, azureCloudOptions?: AzureCloudOptions): Promise<SilentFlowClient> {\r\n // Create auth module.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);\r\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions);\r\n return new SilentFlowClient(clientConfig, this.performanceClient);\r\n }\r\n\r\n async initializeSilentRequest(request: SilentRequest, account: AccountInfo): Promise<CommonSilentFlowRequest> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.InitializeSilentRequest, this.correlationId);\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeBaseRequest, this.correlationId);\r\n return {\r\n ...request,\r\n ...await this.initializeBaseRequest(request, account),\r\n account: account,\r\n forceRefresh: request.forceRefresh || false\r\n };\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, Logger, ICrypto, PromptValue, AuthToken, Constants, AccountEntity, AuthorityType, ScopeSet, TimeUtils, AuthenticationScheme, UrlString, OIDC_DEFAULT_SCOPES, PopTokenGenerator, SignedHttpRequestParameters, IPerformanceClient, PerformanceEvents, IdTokenEntity, AccessTokenEntity, ClientAuthError, AuthError, CommonSilentFlowRequest, AccountInfo, CacheRecord } from \"@azure/msal-common\";\r\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\r\nimport { BrowserConfiguration } from \"../config/Configuration\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { EventHandler } from \"../event/EventHandler\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { SilentRequest } from \"../request/SilentRequest\";\r\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\r\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\r\nimport { NativeExtensionMethod, ApiId, TemporaryCacheKeys, NativeConstants } from \"../utils/BrowserConstants\";\r\nimport { NativeExtensionRequestBody, NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest\";\r\nimport { MATS, NativeResponse } from \"../broker/nativeBroker/NativeResponse\";\r\nimport { NativeAuthError } from \"../error/NativeAuthError\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { SilentCacheClient } from \"./SilentCacheClient\";\r\n\r\nexport class NativeInteractionClient extends BaseInteractionClient {\r\n protected apiId: ApiId;\r\n protected accountId: string;\r\n protected nativeMessageHandler: NativeMessageHandler;\r\n protected silentCacheClient: SilentCacheClient;\r\n protected nativeStorageManager: BrowserCacheManager;\r\n\r\n constructor(config: BrowserConfiguration, browserStorage: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, provider: NativeMessageHandler, accountId: string, nativeStorageImpl: BrowserCacheManager, correlationId?: string) {\r\n super(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId);\r\n this.apiId = apiId;\r\n this.accountId = accountId;\r\n this.nativeMessageHandler = provider;\r\n this.nativeStorageManager = nativeStorageImpl;\r\n this.silentCacheClient = new SilentCacheClient(config, this.nativeStorageManager, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId);\r\n }\r\n\r\n /**\r\n * Acquire token from native platform via browser extension\r\n * @param request\r\n */\r\n async acquireToken(request: PopupRequest|SilentRequest|SsoSilentRequest): Promise<AuthenticationResult> {\r\n this.logger.trace(\"NativeInteractionClient - acquireToken called.\");\r\n\r\n // start the perf measurement\r\n const nativeATMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId);\r\n const reqTimestamp = TimeUtils.nowSeconds();\r\n\r\n // initialize native request\r\n const nativeRequest = await this.initializeNativeRequest(request);\r\n \r\n // check if the tokens can be retrieved from internal cache\r\n try {\r\n const result = await this.acquireTokensFromCache(this.accountId, nativeRequest);\r\n nativeATMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: false, // Should be true only when the result is coming directly from the broker\r\n fromCache: true\r\n });\r\n return result;\r\n } catch (e) {\r\n // continue with a native call for any and all errors\r\n this.logger.info(\"MSAL internal Cache does not contain tokens, proceed to make a native call\");\r\n }\r\n\r\n // fall back to native calls\r\n const messageBody: NativeExtensionRequestBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: nativeRequest\r\n };\r\n\r\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\r\n const validatedResponse: NativeResponse = this.validateNativeResponse(response);\r\n\r\n return this.handleNativeResponse(validatedResponse, nativeRequest, reqTimestamp)\r\n .then((result: AuthenticationResult) => {\r\n nativeATMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true,\r\n requestId: result.requestId\r\n });\r\n return result;\r\n })\r\n .catch((error: AuthError) => {\r\n nativeATMeasurement.endMeasurement({\r\n success: false,\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n isNativeBroker: true\r\n });\r\n throw error;\r\n });\r\n }\r\n\r\n /**\r\n * Creates silent flow request\r\n * @param request\r\n * @param cachedAccount\r\n * @returns CommonSilentFlowRequest\r\n */\r\n private createSilentCacheRequest(request: NativeTokenRequest, cachedAccount: AccountInfo): CommonSilentFlowRequest {\r\n return {\r\n authority: request.authority,\r\n correlationId: this.correlationId,\r\n scopes: ScopeSet.fromString(request.scope).asArray(),\r\n account: cachedAccount,\r\n forceRefresh: false,\r\n };\r\n }\r\n\r\n /**\r\n * Fetches the tokens from the cache if un-expired\r\n * @param nativeAccountId\r\n * @param request\r\n * @returns authenticationResult\r\n */\r\n protected async acquireTokensFromCache(nativeAccountId: string, request: NativeTokenRequest): Promise<AuthenticationResult> {\r\n if (!nativeAccountId) {\r\n this.logger.warning(\"NativeInteractionClient:acquireTokensFromCache - No nativeAccountId provided\");\r\n throw ClientAuthError.createNoAccountFoundError();\r\n }\r\n // fetch the account from browser cache\r\n const account = this.browserStorage.getAccountInfoFilteredBy({nativeAccountId});\r\n if (!account) {\r\n throw ClientAuthError.createNoAccountFoundError();\r\n }\r\n\r\n // leverage silent flow for cached tokens retrieval\r\n try {\r\n const silentRequest = this.createSilentCacheRequest(request, account);\r\n const result = await this.silentCacheClient.acquireToken(silentRequest);\r\n return result;\r\n } catch (e) {\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Acquires a token from native platform then redirects to the redirectUri instead of returning the response\r\n * @param request\r\n */\r\n async acquireTokenRedirect(request: RedirectRequest): Promise<void> {\r\n this.logger.trace(\"NativeInteractionClient - acquireTokenRedirect called.\");\r\n const nativeRequest = await this.initializeNativeRequest(request);\r\n\r\n const messageBody: NativeExtensionRequestBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: nativeRequest\r\n };\r\n\r\n try {\r\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\r\n this.validateNativeResponse(response);\r\n } catch (e) {\r\n // Only throw fatal errors here to allow application to fallback to regular redirect. Otherwise proceed and the error will be thrown in handleRedirectPromise\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n throw e;\r\n }\r\n }\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, JSON.stringify(nativeRequest), true);\r\n\r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.acquireTokenRedirect,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n const redirectUri = this.config.auth.navigateToLoginRequestUrl ? window.location.href : this.getRedirectUri(request.redirectUri);\r\n await this.navigationClient.navigateExternal(redirectUri, navigationOptions); // Need to treat this as external to ensure handleRedirectPromise is run again\r\n }\r\n\r\n /**\r\n * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response\r\n */\r\n async handleRedirectPromise(): Promise<AuthenticationResult | null> {\r\n this.logger.trace(\"NativeInteractionClient - handleRedirectPromise called.\");\r\n if (!this.browserStorage.isInteractionInProgress(true)) {\r\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\r\n return null;\r\n }\r\n\r\n // remove prompt from the request to prevent WAM from prompting twice\r\n const cachedRequest = this.browserStorage.getCachedNativeRequest();\r\n if (!cachedRequest) {\r\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null.\");\r\n return null;\r\n }\r\n\r\n const { prompt, ...request} = cachedRequest;\r\n if (prompt) {\r\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise called and prompt was included in the original request, removing prompt from cached request to prevent second interaction with native broker window.\");\r\n }\r\n\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\r\n\r\n const messageBody: NativeExtensionRequestBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: request\r\n };\r\n\r\n const reqTimestamp = TimeUtils.nowSeconds();\r\n\r\n try {\r\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise sending message to native broker.\");\r\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\r\n this.validateNativeResponse(response);\r\n const result = this.handleNativeResponse(response as NativeResponse, request, reqTimestamp);\r\n this.browserStorage.setInteractionInProgress(false);\r\n return result;\r\n } catch (e) {\r\n this.browserStorage.setInteractionInProgress(false);\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Logout from native platform via browser extension\r\n * @param request\r\n */\r\n logout(): Promise<void> {\r\n this.logger.trace(\"NativeInteractionClient - logout called.\");\r\n return Promise.reject(\"Logout not implemented yet\");\r\n }\r\n\r\n /**\r\n * Transform response from native platform into AuthenticationResult object which will be returned to the end user\r\n * @param response\r\n * @param request\r\n * @param reqTimestamp\r\n */\r\n protected async handleNativeResponse(response: NativeResponse, request: NativeTokenRequest, reqTimestamp: number): Promise<AuthenticationResult> {\r\n this.logger.trace(\"NativeInteractionClient - handleNativeResponse called.\");\r\n\r\n if (response.account.id !== request.accountId) {\r\n // User switch in native broker prompt is not supported. All users must first sign in through web flow to ensure server state is in sync\r\n throw NativeAuthError.createUserSwitchError();\r\n }\r\n\r\n // Get the preferred_cache domain for the given authority\r\n const authority = await this.getDiscoveredAuthority(request.authority);\r\n const authorityPreferredCache = authority.getPreferredCache();\r\n\r\n // generate identifiers\r\n const idTokenObj = this.createIdTokenObj(response);\r\n const homeAccountIdentifier = this.createHomeAccountIdentifier(response, idTokenObj);\r\n const accountEntity = this.createAccountEntity(response, homeAccountIdentifier, idTokenObj, authorityPreferredCache);\r\n\r\n // generate authenticationResult\r\n const result = await this.generateAuthenticationResult(response, request, idTokenObj, accountEntity, authority.canonicalAuthority, reqTimestamp);\r\n\r\n // cache accounts and tokens in the appropriate storage\r\n this.cacheAccount(accountEntity);\r\n this.cacheNativeTokens(response, request, homeAccountIdentifier, accountEntity, idTokenObj, result.accessToken, result.tenantId, reqTimestamp);\r\n \r\n return result;\r\n }\r\n\r\n /**\r\n * Create an idToken Object (not entity)\r\n * @param response \r\n * @returns \r\n */\r\n protected createIdTokenObj(response: NativeResponse): AuthToken {\r\n return new AuthToken(response.id_token || Constants.EMPTY_STRING, this.browserCrypto);\r\n }\r\n\r\n /**\r\n * creates an homeAccountIdentifier for the account\r\n * @param response \r\n * @param idTokenObj \r\n * @returns \r\n */\r\n protected createHomeAccountIdentifier(response: NativeResponse, idTokenObj: AuthToken): string {\r\n // Save account in browser storage\r\n const homeAccountIdentifier = AccountEntity.generateHomeAccountId(response.client_info || Constants.EMPTY_STRING, AuthorityType.Default, this.logger, this.browserCrypto, idTokenObj);\r\n\r\n return homeAccountIdentifier;\r\n }\r\n\r\n /**\r\n * Creates account entity\r\n * @param response \r\n * @param homeAccountIdentifier \r\n * @param idTokenObj \r\n * @param authority \r\n * @returns \r\n */\r\n protected createAccountEntity(response: NativeResponse, homeAccountIdentifier: string, idTokenObj: AuthToken, authority: string): AccountEntity {\r\n\r\n return AccountEntity.createAccount(response.client_info, homeAccountIdentifier, idTokenObj, undefined, undefined, undefined, authority, response.account.id);\r\n }\r\n\r\n /**\r\n * Helper to generate scopes\r\n * @param response \r\n * @param request \r\n * @returns \r\n */\r\n generateScopes(response: NativeResponse, request: NativeTokenRequest): ScopeSet {\r\n return response.scope ? ScopeSet.fromString(response.scope) : ScopeSet.fromString(request.scope);\r\n }\r\n\r\n /**\r\n * If PoP token is requesred, records the PoP token if returned from the WAM, else generates one in the browser\r\n * @param request \r\n * @param response \r\n */\r\n async generatePopAccessToken(response: NativeResponse, request: NativeTokenRequest): Promise<string> {\r\n \r\n if(request.tokenType === AuthenticationScheme.POP) {\r\n /** \r\n * This code prioritizes SHR returned from the native layer. In case of error/SHR not calculated from WAM and the AT \r\n * is still received, SHR is calculated locally\r\n */\r\n \r\n // Check if native layer returned an SHR token\r\n if (response.shr) {\r\n this.logger.trace(\"handleNativeServerResponse: SHR is enabled in native layer\");\r\n return response.shr;\r\n }\r\n\r\n // Generate SHR in msal js if WAM does not compute it when POP is enabled\r\n const popTokenGenerator: PopTokenGenerator = new PopTokenGenerator(this.browserCrypto);\r\n const shrParameters: SignedHttpRequestParameters = {\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n shrNonce: request.shrNonce\r\n };\r\n\r\n /**\r\n * KeyID must be present in the native request from when the PoP key was generated in order for\r\n * PopTokenGenerator to query the full key for signing\r\n */\r\n if (!request.keyId) {\r\n throw ClientAuthError.createKeyIdMissingError();\r\n }\r\n return await popTokenGenerator.signPopToken(response.access_token, request.keyId, shrParameters);\r\n } else {\r\n return response.access_token;\r\n }\r\n }\r\n\r\n /**\r\n * Generates authentication result\r\n * @param response \r\n * @param request \r\n * @param idTokenObj \r\n * @param accountEntity \r\n * @param authority \r\n * @param reqTimestamp \r\n * @returns \r\n */\r\n protected async generateAuthenticationResult(response: NativeResponse, request: NativeTokenRequest, idTokenObj: AuthToken, accountEntity: AccountEntity, authority: string, reqTimestamp: number): Promise<AuthenticationResult> {\r\n\r\n // Add Native Broker fields to Telemetry\r\n const mats = this.addTelemetryFromNativeResponse(response);\r\n\r\n // If scopes not returned in server response, use request scopes\r\n const responseScopes = response.scope ? ScopeSet.fromString(response.scope) : ScopeSet.fromString(request.scope);\r\n\r\n const accountProperties = response.account.properties || {};\r\n const uid = accountProperties[\"UID\"] || idTokenObj.claims.oid || idTokenObj.claims.sub || Constants.EMPTY_STRING;\r\n const tid = accountProperties[\"TenantId\"] || idTokenObj.claims.tid || Constants.EMPTY_STRING;\r\n\r\n // generate PoP token as needed\r\n const responseAccessToken = await this.generatePopAccessToken(response, request);\r\n const tokenType = (request.tokenType === AuthenticationScheme.POP) ? AuthenticationScheme.POP : AuthenticationScheme.BEARER;\r\n\r\n const result: AuthenticationResult = {\r\n authority: authority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes.asArray(),\r\n account: accountEntity.getAccountInfo(),\r\n idToken: response.id_token,\r\n idTokenClaims: idTokenObj.claims,\r\n accessToken: responseAccessToken,\r\n fromCache: mats ? this.isResponseFromCache(mats) : false,\r\n expiresOn: new Date(Number(reqTimestamp + response.expires_in) * 1000),\r\n tokenType: tokenType,\r\n correlationId: this.correlationId,\r\n state: response.state,\r\n fromNativeBroker: true\r\n };\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * cache the account entity in browser storage\r\n * @param accountEntity \r\n */\r\n cacheAccount(accountEntity: AccountEntity): void{\r\n // Store the account info and hence `nativeAccountId` in browser cache\r\n this.browserStorage.setAccount(accountEntity);\r\n\r\n // Remove any existing cached tokens for this account in browser storage\r\n this.browserStorage.removeAccountContext(accountEntity).catch((e) => {\r\n this.logger.error(`Error occurred while removing account context from browser storage. ${e}`);\r\n });\r\n }\r\n\r\n /**\r\n * Stores the access_token and id_token in inmemory storage\r\n * @param response \r\n * @param request \r\n * @param homeAccountIdentifier \r\n * @param idTokenObj \r\n * @param responseAccessToken \r\n * @param tenantId \r\n * @param reqTimestamp \r\n */\r\n cacheNativeTokens(response: NativeResponse, request: NativeTokenRequest, homeAccountIdentifier: string, accountEntity: AccountEntity, idTokenObj: AuthToken, responseAccessToken: string, tenantId: string, reqTimestamp: number): void {\r\n\r\n const cachedIdToken: IdTokenEntity | null =\r\n IdTokenEntity.createIdTokenEntity(\r\n homeAccountIdentifier,\r\n request.authority,\r\n response.id_token || Constants.EMPTY_STRING,\r\n request.clientId,\r\n idTokenObj.claims.tid || Constants.EMPTY_STRING\r\n );\r\n\r\n // cache accessToken in inmemory storage\r\n const expiresIn: number = (request.tokenType === AuthenticationScheme.POP)\r\n ? Constants.SHR_NONCE_VALIDITY\r\n : (\r\n typeof response.expires_in === \"string\"\r\n ? parseInt(response.expires_in, 10)\r\n : response.expires_in\r\n ) || 0;\r\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n const responseScopes = this.generateScopes(response, request);\r\n const cachedAccessToken: AccessTokenEntity | null =\r\n AccessTokenEntity.createAccessTokenEntity(\r\n homeAccountIdentifier,\r\n request.authority,\r\n responseAccessToken,\r\n request.clientId,\r\n idTokenObj\r\n ? idTokenObj.claims.tid || Constants.EMPTY_STRING\r\n : tenantId,\r\n responseScopes.printScopes(),\r\n tokenExpirationSeconds,\r\n 0,\r\n this.browserCrypto\r\n );\r\n\r\n const nativeCacheRecord = new CacheRecord(\r\n accountEntity,\r\n cachedIdToken,\r\n cachedAccessToken\r\n );\r\n\r\n this.nativeStorageManager.saveCacheRecord(nativeCacheRecord);\r\n }\r\n\r\n protected addTelemetryFromNativeResponse(response: NativeResponse): MATS | null {\r\n\r\n const mats = this.getMATSFromResponse(response);\r\n\r\n if (!mats){\r\n return null;\r\n }\r\n \r\n this.performanceClient.addStaticFields({\r\n extensionId: this.nativeMessageHandler.getExtensionId(),\r\n extensionVersion: this.nativeMessageHandler.getExtensionVersion(),\r\n matsBrokerVersion: mats.broker_version,\r\n matsAccountJoinOnStart: mats.account_join_on_start,\r\n matsAccountJoinOnEnd: mats.account_join_on_end,\r\n matsDeviceJoin: mats.device_join,\r\n matsPromptBehavior: mats.prompt_behavior,\r\n matsApiErrorCode: mats.api_error_code,\r\n matsUiVisible: mats.ui_visible,\r\n matsSilentCode: mats.silent_code,\r\n matsSilentBiSubCode: mats.silent_bi_sub_code,\r\n matsSilentMessage: mats.silent_message,\r\n matsSilentStatus: mats.silent_status,\r\n matsHttpStatus: mats.http_status,\r\n matsHttpEventCount: mats.http_event_count\r\n }, this.correlationId);\r\n\r\n return mats;\r\n }\r\n\r\n /**\r\n * Validates native platform response before processing\r\n * @param response\r\n */\r\n private validateNativeResponse(response: object): NativeResponse {\r\n if (\r\n response.hasOwnProperty(\"access_token\") &&\r\n response.hasOwnProperty(\"id_token\") &&\r\n response.hasOwnProperty(\"client_info\") &&\r\n response.hasOwnProperty(\"account\") &&\r\n response.hasOwnProperty(\"scope\") &&\r\n response.hasOwnProperty(\"expires_in\")\r\n ) {\r\n return response as NativeResponse;\r\n } else {\r\n throw NativeAuthError.createUnexpectedError(\"Response missing expected properties.\");\r\n }\r\n }\r\n\r\n /**\r\n * Gets MATS telemetry from native response\r\n * @param response\r\n * @returns\r\n */\r\n private getMATSFromResponse(response: NativeResponse): MATS|null {\r\n if (response.properties.MATS) {\r\n try {\r\n return JSON.parse(response.properties.MATS);\r\n } catch (e) {\r\n this.logger.error(\"NativeInteractionClient - Error parsing MATS telemetry, returning null instead\");\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Returns whether or not response came from native cache\r\n * @param response\r\n * @returns\r\n */\r\n protected isResponseFromCache(mats: MATS): boolean {\r\n if (typeof mats.is_cached === \"undefined\") {\r\n this.logger.verbose(\"NativeInteractionClient - MATS telemetry does not contain field indicating if response was served from cache. Returning false.\");\r\n return false;\r\n }\r\n\r\n return !!mats.is_cached;\r\n }\r\n\r\n /**\r\n * Translates developer provided request object into NativeRequest object\r\n * @param request\r\n */\r\n protected async initializeNativeRequest(request: PopupRequest|SsoSilentRequest): Promise<NativeTokenRequest> {\r\n this.logger.trace(\"NativeInteractionClient - initializeNativeRequest called\");\r\n\r\n const authority = request.authority || this.config.auth.authority;\r\n\r\n if (request.account) {\r\n await this.validateRequestAuthority(authority, request.account);\r\n }\r\n\r\n const canonicalAuthority = new UrlString(authority);\r\n canonicalAuthority.validateAsUri();\r\n\r\n // scopes are expected to be received by the native broker as \"scope\" and will be added to the request below. Other properties that should be dropped from the request to the native broker can be included in the object destructuring here.\r\n const { scopes, ...remainingProperties } = request; \r\n const scopeSet = new ScopeSet(scopes || []);\r\n scopeSet.appendScopes(OIDC_DEFAULT_SCOPES);\r\n\r\n const getPrompt = () => {\r\n // If request is silent, prompt is always none\r\n switch (this.apiId) {\r\n case ApiId.ssoSilent:\r\n case ApiId.acquireTokenSilent_silentFlow:\r\n this.logger.trace(\"initializeNativeRequest: silent request sets prompt to none\");\r\n return PromptValue.NONE;\r\n default:\r\n break;\r\n }\r\n\r\n // Prompt not provided, request may proceed and native broker decides if it needs to prompt\r\n if (!request.prompt) {\r\n this.logger.trace(\"initializeNativeRequest: prompt was not provided\");\r\n return undefined;\r\n }\r\n\r\n // If request is interactive, check if prompt provided is allowed to go directly to native broker\r\n switch (request.prompt) {\r\n case PromptValue.NONE:\r\n case PromptValue.CONSENT:\r\n case PromptValue.LOGIN:\r\n this.logger.trace(\"initializeNativeRequest: prompt is compatible with native flow\");\r\n return request.prompt;\r\n default:\r\n this.logger.trace(`initializeNativeRequest: prompt = ${request.prompt} is not compatible with native flow`);\r\n throw BrowserAuthError.createNativePromptParameterNotSupportedError();\r\n }\r\n };\r\n \r\n const validatedRequest: NativeTokenRequest = {\r\n ...remainingProperties,\r\n accountId: this.accountId,\r\n clientId: this.config.auth.clientId,\r\n authority: canonicalAuthority.urlString,\r\n scope: scopeSet.printScopes(),\r\n redirectUri: this.getRedirectUri(request.redirectUri),\r\n prompt: getPrompt(),\r\n correlationId: this.correlationId,\r\n tokenType: request.authenticationScheme,\r\n windowTitleSubstring: document.title,\r\n extraParameters: {\r\n ...request.extraQueryParameters,\r\n ...request.tokenQueryParameters,\r\n telemetry: NativeConstants.MATS_TELEMETRY\r\n },\r\n extendedExpiryToken: false // Make this configurable?\r\n };\r\n\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n\r\n // add POP request type\r\n const shrParameters: SignedHttpRequestParameters = {\r\n resourceRequestUri: request.resourceRequestUri,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n shrClaims: request.shrClaims,\r\n shrNonce: request.shrNonce\r\n };\r\n\r\n const popTokenGenerator = new PopTokenGenerator(this.browserCrypto);\r\n const reqCnfData = await popTokenGenerator.generateCnf(shrParameters);\r\n\r\n // to reduce the URL length, it is recommended to send the short form of the req_cnf \r\n validatedRequest.reqCnf = reqCnfData.reqCnfString;\r\n validatedRequest.keyId = reqCnfData.kid;\r\n }\r\n\r\n return validatedRequest;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { NativeConstants, NativeExtensionMethod } from \"../../utils/BrowserConstants\";\r\nimport {\r\n Logger,\r\n AuthError,\r\n AuthenticationScheme,\r\n InProgressPerformanceEvent,\r\n PerformanceEvents,\r\n IPerformanceClient\r\n} from \"@azure/msal-common\";\r\nimport { NativeExtensionRequest, NativeExtensionRequestBody } from \"./NativeRequest\";\r\nimport { NativeAuthError } from \"../../error/NativeAuthError\";\r\nimport { BrowserAuthError } from \"../../error/BrowserAuthError\";\r\nimport { BrowserConfiguration } from \"../../config/Configuration\";\r\n\r\ntype ResponseResolvers<T> = {\r\n resolve: (value:T|PromiseLike<T>) => void;\r\n reject: (value:AuthError|Error|PromiseLike<Error>|PromiseLike<AuthError>) => void;\r\n};\r\n\r\nexport class NativeMessageHandler {\r\n private extensionId: string | undefined;\r\n private extensionVersion: string | undefined;\r\n private logger: Logger;\r\n private readonly handshakeTimeoutMs: number;\r\n private responseId: number;\r\n private timeoutId: number | undefined;\r\n private resolvers: Map<number, ResponseResolvers<object>>;\r\n private handshakeResolvers: Map<number, ResponseResolvers<void>>;\r\n private messageChannel: MessageChannel;\r\n private readonly windowListener: (event: MessageEvent) => void;\r\n private readonly performanceClient: IPerformanceClient;\r\n private readonly handshakeEvent: InProgressPerformanceEvent;\r\n\r\n constructor(logger: Logger, handshakeTimeoutMs: number, performanceClient: IPerformanceClient, extensionId?: string) {\r\n this.logger = logger;\r\n this.handshakeTimeoutMs = handshakeTimeoutMs;\r\n this.extensionId = extensionId;\r\n this.resolvers = new Map(); // Used for non-handshake messages\r\n this.handshakeResolvers = new Map(); // Used for handshake messages\r\n this.responseId = 0;\r\n this.messageChannel = new MessageChannel();\r\n this.windowListener = this.onWindowMessage.bind(this); // Window event callback doesn't have access to 'this' unless it's bound\r\n this.performanceClient = performanceClient;\r\n this.handshakeEvent = performanceClient.startMeasurement(PerformanceEvents.NativeMessageHandlerHandshake);\r\n }\r\n\r\n /**\r\n * Sends a given message to the extension and resolves with the extension response\r\n * @param body\r\n */\r\n async sendMessage(body: NativeExtensionRequestBody): Promise<object> {\r\n this.logger.trace(\"NativeMessageHandler - sendMessage called.\");\r\n const req: NativeExtensionRequest = {\r\n channel: NativeConstants.CHANNEL_ID,\r\n extensionId: this.extensionId,\r\n responseId: this.responseId++,\r\n body: body\r\n };\r\n\r\n this.logger.trace(\"NativeMessageHandler - Sending request to browser extension\");\r\n this.logger.tracePii(`NativeMessageHandler - Sending request to browser extension: ${JSON.stringify(req)}`);\r\n this.messageChannel.port1.postMessage(req);\r\n\r\n return new Promise((resolve, reject) => {\r\n this.resolvers.set(req.responseId, {resolve, reject});\r\n });\r\n }\r\n\r\n /**\r\n * Returns an instance of the MessageHandler that has successfully established a connection with an extension\r\n * @param {Logger} logger\r\n * @param {number} handshakeTimeoutMs\r\n * @param {IPerformanceClient} performanceClient\r\n */\r\n static async createProvider(logger: Logger, handshakeTimeoutMs: number, performanceClient: IPerformanceClient): Promise<NativeMessageHandler> {\r\n logger.trace(\"NativeMessageHandler - createProvider called.\");\r\n try {\r\n const preferredProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, performanceClient, NativeConstants.PREFERRED_EXTENSION_ID);\r\n await preferredProvider.sendHandshakeRequest();\r\n return preferredProvider;\r\n } catch (e) {\r\n // If preferred extension fails for whatever reason, fallback to using any installed extension\r\n const backupProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, performanceClient);\r\n await backupProvider.sendHandshakeRequest();\r\n return backupProvider;\r\n }\r\n }\r\n\r\n /**\r\n * Send handshake request helper.\r\n */\r\n private async sendHandshakeRequest(): Promise<void> {\r\n this.logger.trace(\"NativeMessageHandler - sendHandshakeRequest called.\");\r\n // Register this event listener before sending handshake\r\n window.addEventListener(\"message\", this.windowListener, false); // false is important, because content script message processing should work first\r\n\r\n const req: NativeExtensionRequest = {\r\n channel: NativeConstants.CHANNEL_ID,\r\n extensionId: this.extensionId,\r\n responseId: this.responseId++,\r\n body: {\r\n method: NativeExtensionMethod.HandshakeRequest\r\n }\r\n };\r\n this.handshakeEvent.addStaticFields({\r\n extensionId: this.extensionId,\r\n extensionHandshakeTimeoutMs: this.handshakeTimeoutMs\r\n });\r\n\r\n this.messageChannel.port1.onmessage = (event) => {\r\n this.onChannelMessage(event);\r\n };\r\n\r\n window.postMessage(req, window.origin, [this.messageChannel.port2]);\r\n\r\n return new Promise((resolve, reject) => {\r\n this.handshakeResolvers.set(req.responseId, {resolve, reject});\r\n this.timeoutId = window.setTimeout(() => {\r\n /*\r\n * Throw an error if neither HandshakeResponse nor original Handshake request are received in a reasonable timeframe.\r\n * This typically suggests an event handler stopped propagation of the Handshake request but did not respond to it on the MessageChannel port\r\n */\r\n window.removeEventListener(\"message\", this.windowListener, false);\r\n this.messageChannel.port1.close();\r\n this.messageChannel.port2.close();\r\n this.handshakeEvent.endMeasurement({extensionHandshakeTimedOut: true, success: false});\r\n reject(BrowserAuthError.createNativeHandshakeTimeoutError());\r\n this.handshakeResolvers.delete(req.responseId);\r\n }, this.handshakeTimeoutMs); // Use a reasonable timeout in milliseconds here\r\n });\r\n }\r\n\r\n /**\r\n * Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed.\r\n * @param event\r\n */\r\n private onWindowMessage(event: MessageEvent): void {\r\n this.logger.trace(\"NativeMessageHandler - onWindowMessage called\");\r\n // We only accept messages from ourselves\r\n if (event.source !== window) {\r\n return;\r\n }\r\n\r\n const request = event.data;\r\n\r\n if (!request.channel || request.channel !== NativeConstants.CHANNEL_ID) {\r\n return;\r\n }\r\n\r\n if (request.extensionId && request.extensionId !== this.extensionId) {\r\n return;\r\n }\r\n\r\n if (request.body.method === NativeExtensionMethod.HandshakeRequest) {\r\n // If we receive this message back it means no extension intercepted the request, meaning no extension supporting handshake protocol is installed\r\n this.logger.verbose(request.extensionId ? `Extension with id: ${request.extensionId} not installed` : \"No extension installed\");\r\n clearTimeout(this.timeoutId);\r\n this.messageChannel.port1.close();\r\n this.messageChannel.port2.close();\r\n window.removeEventListener(\"message\", this.windowListener, false);\r\n const handshakeResolver = this.handshakeResolvers.get(request.responseId);\r\n if (handshakeResolver) {\r\n this.handshakeEvent.endMeasurement({success: false, extensionInstalled: false});\r\n handshakeResolver.reject(BrowserAuthError.createNativeExtensionNotInstalledError());\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Invoked when a message is received from the extension on the MessageChannel port\r\n * @param event\r\n */\r\n private onChannelMessage(event: MessageEvent): void {\r\n this.logger.trace(\"NativeMessageHandler - onChannelMessage called.\");\r\n const request = event.data;\r\n\r\n const resolver = this.resolvers.get(request.responseId);\r\n const handshakeResolver = this.handshakeResolvers.get(request.responseId);\r\n\r\n try {\r\n const method = request.body.method;\r\n\r\n if (method === NativeExtensionMethod.Response) {\r\n if (!resolver) {\r\n return;\r\n }\r\n const response = request.body.response;\r\n this.logger.trace(\"NativeMessageHandler - Received response from browser extension\");\r\n this.logger.tracePii(`NativeMessageHandler - Received response from browser extension: ${JSON.stringify(response)}`);\r\n if (response.status !== \"Success\") {\r\n resolver.reject(NativeAuthError.createError(response.code, response.description, response.ext));\r\n } else if (response.result) {\r\n if (response.result[\"code\"] && response.result[\"description\"]) {\r\n resolver.reject(NativeAuthError.createError(response.result[\"code\"], response.result[\"description\"], response.result[\"ext\"]));\r\n } else {\r\n resolver.resolve(response.result);\r\n }\r\n } else {\r\n throw AuthError.createUnexpectedError(\"Event does not contain result.\");\r\n }\r\n this.resolvers.delete(request.responseId);\r\n } else if (method === NativeExtensionMethod.HandshakeResponse) {\r\n if (!handshakeResolver) {\r\n return;\r\n }\r\n clearTimeout(this.timeoutId); // Clear setTimeout\r\n window.removeEventListener(\"message\", this.windowListener, false); // Remove 'No extension' listener\r\n this.extensionId = request.extensionId;\r\n this.extensionVersion = request.body.version;\r\n this.logger.verbose(`NativeMessageHandler - Received HandshakeResponse from extension: ${this.extensionId}`);\r\n this.handshakeEvent.endMeasurement({extensionInstalled: true, success: true});\r\n\r\n handshakeResolver.resolve();\r\n this.handshakeResolvers.delete(request.responseId);\r\n }\r\n // Do nothing if method is not Response or HandshakeResponse\r\n } catch (err) {\r\n this.logger.error(\"Error parsing response from WAM Extension\");\r\n this.logger.errorPii(`Error parsing response from WAM Extension: ${err.toString()}`);\r\n this.logger.errorPii(`Unable to parse ${event}`);\r\n\r\n if (resolver) {\r\n resolver.reject(err as AuthError);\r\n } else if (handshakeResolver) {\r\n handshakeResolver.reject(err as AuthError);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns the Id for the browser extension this handler is communicating with\r\n * @returns\r\n */\r\n getExtensionId(): string | undefined {\r\n return this.extensionId;\r\n }\r\n\r\n /**\r\n * Returns the version for the browser extension this handler is communicating with\r\n * @returns\r\n */\r\n getExtensionVersion(): string | undefined {\r\n return this.extensionVersion;\r\n }\r\n\r\n /**\r\n * Returns boolean indicating whether or not the request should attempt to use native broker\r\n * @param logger\r\n * @param config\r\n * @param nativeExtensionProvider\r\n * @param authenticationScheme\r\n */\r\n static isNativeAvailable(config: BrowserConfiguration, logger: Logger, nativeExtensionProvider?: NativeMessageHandler, authenticationScheme?: AuthenticationScheme): boolean {\r\n logger.trace(\"isNativeAvailable called\");\r\n if (!config.system.allowNativeBroker) {\r\n logger.trace(\"isNativeAvailable: allowNativeBroker is not enabled, returning false\");\r\n // Developer disabled WAM\r\n return false;\r\n }\r\n\r\n if (!nativeExtensionProvider) {\r\n logger.trace(\"isNativeAvailable: WAM extension provider is not initialized, returning false\");\r\n // Extension is not available\r\n return false;\r\n }\r\n\r\n if (authenticationScheme) {\r\n switch(authenticationScheme) {\r\n case AuthenticationScheme.BEARER:\r\n case AuthenticationScheme.POP:\r\n logger.trace(\"isNativeAvailable: authenticationScheme is supported, returning true\");\r\n return true;\r\n default:\r\n logger.trace(\"isNativeAvailable: authenticationScheme is not supported, returning false\");\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthorizationCodePayload, StringUtils, CommonAuthorizationCodeRequest, AuthenticationResult, AuthorizationCodeClient, AuthorityFactory, Authority, INetworkModule, ClientAuthError, CcsCredential, Logger, ServerError, IPerformanceClient, PerformanceEvents } from \"@azure/msal-common\";\r\n\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\r\nimport { TemporaryCacheKeys } from \"../utils/BrowserConstants\";\r\n\r\nexport type InteractionParams = {};\r\n\r\n/**\r\n * Abstract class which defines operations for a browser interaction handling class.\r\n */\r\nexport class InteractionHandler {\r\n\r\n protected authModule: AuthorizationCodeClient;\r\n protected browserStorage: BrowserCacheManager;\r\n protected authCodeRequest: CommonAuthorizationCodeRequest;\r\n protected logger: Logger;\r\n protected performanceClient: IPerformanceClient;\r\n\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, performanceClient: IPerformanceClient) {\r\n this.authModule = authCodeModule;\r\n this.browserStorage = storageImpl;\r\n this.authCodeRequest = authCodeRequest;\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n }\r\n\r\n /**\r\n * Function to handle response parameters from hash.\r\n * @param locationHash\r\n */\r\n async handleCodeResponseFromHash(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule): Promise<AuthenticationResult> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponseFromHash, this.authCodeRequest.correlationId);\r\n this.logger.verbose(\"InteractionHandler.handleCodeResponse called\");\r\n // Check that location hash isn't empty.\r\n if (StringUtils.isEmpty(locationHash)) {\r\n throw BrowserAuthError.createEmptyHashError(locationHash);\r\n }\r\n\r\n // Handle code response.\r\n const stateKey = this.browserStorage.generateStateKey(state);\r\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n\r\n let authCodeResponse;\r\n try {\r\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\r\n } catch (e) {\r\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\r\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\r\n throw BrowserAuthError.createUserCancelledError();\r\n } else {\r\n throw e;\r\n }\r\n }\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.HandleCodeResponseFromServer, this.authCodeRequest.correlationId);\r\n return this.handleCodeResponseFromServer(authCodeResponse, state, authority, networkModule);\r\n }\r\n\r\n /**\r\n * Process auth code response from AAD\r\n * @param authCodeResponse \r\n * @param state \r\n * @param authority \r\n * @param networkModule \r\n * @returns \r\n */\r\n async handleCodeResponseFromServer(authCodeResponse: AuthorizationCodePayload, state: string, authority: Authority, networkModule: INetworkModule, validateNonce: boolean = true): Promise<AuthenticationResult> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponseFromServer, this.authCodeRequest.correlationId);\r\n this.logger.trace(\"InteractionHandler.handleCodeResponseFromServer called\");\r\n\r\n // Handle code response.\r\n const stateKey = this.browserStorage.generateStateKey(state);\r\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n\r\n // Get cached items\r\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\r\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\r\n\r\n // Assign code to request\r\n this.authCodeRequest.code = authCodeResponse.code;\r\n\r\n // Check for new cloud instance\r\n if (authCodeResponse.cloud_instance_host_name) {\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.UpdateTokenEndpointAuthority, this.authCodeRequest.correlationId);\r\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\r\n }\r\n\r\n // Nonce validation not needed when redirect not involved (e.g. hybrid spa, renewing token via rt)\r\n if (validateNonce) {\r\n authCodeResponse.nonce = cachedNonce || undefined;\r\n }\r\n\r\n authCodeResponse.state = requestState;\r\n\r\n // Add CCS parameters if available\r\n if (authCodeResponse.client_info) {\r\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\r\n } else {\r\n const cachedCcsCred = this.checkCcsCredentials();\r\n if (cachedCcsCred) {\r\n this.authCodeRequest.ccsCredential = cachedCcsCred;\r\n }\r\n }\r\n\r\n // Acquire token with retrieved code.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.AuthClientAcquireToken, this.authCodeRequest.correlationId);\r\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\r\n this.browserStorage.cleanRequestByState(state);\r\n return tokenResponse;\r\n }\r\n\r\n /**\r\n * Updates authority based on cloudInstanceHostname\r\n * @param cloudInstanceHostname \r\n * @param authority \r\n * @param networkModule \r\n */\r\n protected async updateTokenEndpointAuthority(cloudInstanceHostname: string, authority: Authority, networkModule: INetworkModule): Promise<void> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, this.authCodeRequest.correlationId);\r\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${authority.tenant}/`;\r\n const cloudInstanceAuthority = await AuthorityFactory.createDiscoveredInstance(cloudInstanceAuthorityUri, networkModule, this.browserStorage, authority.options, this.logger, this.performanceClient, this.authCodeRequest.correlationId);\r\n this.authModule.updateAuthority(cloudInstanceAuthority);\r\n }\r\n\r\n /**\r\n * Looks up ccs creds in the cache\r\n */\r\n protected checkCcsCredentials(): CcsCredential | null {\r\n // Look up ccs credential in temp cache\r\n const cachedCcsCred = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, true);\r\n if (cachedCcsCred) {\r\n try {\r\n return JSON.parse(cachedCcsCred) as CcsCredential;\r\n } catch (e) {\r\n this.authModule.logger.error(\"Cache credential could not be parsed\");\r\n this.authModule.logger.errorPii(`Cache credential could not be parsed: ${cachedCcsCred}`);\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, CommonAuthorizationCodeRequest, AuthorizationCodeClient, ThrottlingUtils, CommonEndSessionRequest, UrlString, AuthError, OIDC_DEFAULT_SCOPES, Constants, ProtocolUtils, ServerAuthorizationCodeResponse, PerformanceEvents, StringUtils, IPerformanceClient, Logger, ICrypto } from \"@azure/msal-common\";\r\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\r\nimport { EventType } from \"../event/EventType\";\r\nimport { InteractionType, ApiId, BrowserConstants } from \"../utils/BrowserConstants\";\r\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\r\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { NativeInteractionClient } from \"./NativeInteractionClient\";\r\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { EventHandler } from \"../event/EventHandler\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { BrowserConfiguration } from \"../config/Configuration\";\r\nimport { InteractionHandler, InteractionParams } from \"../interaction_handler/InteractionHandler\";\r\nimport { PopupWindowAttributes } from \"../request/PopupWindowAttributes\";\r\n\r\nexport type PopupParams = InteractionParams & {\r\n popup?: Window|null;\r\n popupName: string;\r\n popupWindowAttributes: PopupWindowAttributes\r\n};\r\n\r\nexport class PopupClient extends StandardInteractionClient {\r\n private currentWindow: Window | undefined;\r\n protected nativeStorage: BrowserCacheManager;\r\n\r\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\r\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\r\n // Properly sets this reference for the unload event.\r\n this.unloadWindow = this.unloadWindow.bind(this);\r\n this.nativeStorage = nativeStorageImpl;\r\n }\r\n\r\n /**\r\n * Acquires tokens by opening a popup window to the /authorize endpoint of the authority\r\n * @param request\r\n */\r\n acquireToken(request: PopupRequest): Promise<AuthenticationResult> {\r\n try {\r\n const popupName = this.generatePopupName(request.scopes || OIDC_DEFAULT_SCOPES, request.authority || this.config.auth.authority);\r\n const popupWindowAttributes = request.popupWindowAttributes || {};\r\n\r\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\r\n if (this.config.system.asyncPopups) {\r\n this.logger.verbose(\"asyncPopups set to true, acquiring token\");\r\n // Passes on popup position and dimensions if in request\r\n return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes);\r\n } else {\r\n // asyncPopups flag is set to false. Opens popup before acquiring token.\r\n this.logger.verbose(\"asyncPopup set to false, opening popup before acquiring token\");\r\n const popup = this.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes);\r\n return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes, popup);\r\n }\r\n } catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n /**\r\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\r\n * @param logoutRequest\r\n */\r\n logout(logoutRequest?: EndSessionPopupRequest): Promise<void> {\r\n try {\r\n this.logger.verbose(\"logoutPopup called\");\r\n const validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\r\n\r\n const popupName = this.generateLogoutPopupName(validLogoutRequest);\r\n const authority = logoutRequest && logoutRequest.authority;\r\n const mainWindowRedirectUri = logoutRequest && logoutRequest.mainWindowRedirectUri;\r\n const popupWindowAttributes = logoutRequest?.popupWindowAttributes || {};\r\n\r\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\r\n if (this.config.system.asyncPopups) {\r\n this.logger.verbose(\"asyncPopups set to true\");\r\n // Passes on popup position and dimensions if in request\r\n return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, undefined, mainWindowRedirectUri);\r\n } else {\r\n // asyncPopups flag is set to false. Opens popup before logging out.\r\n this.logger.verbose(\"asyncPopup set to false, opening popup\");\r\n const popup = this.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes);\r\n return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, popup, mainWindowRedirectUri);\r\n }\r\n } catch (e) {\r\n // Since this function is synchronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n /**\r\n * Helper which obtains an access_token for your API via opening a popup window in the user's browser\r\n * @param validRequest\r\n * @param popupName\r\n * @param popup\r\n * @param popupWindowAttributes\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n protected async acquireTokenPopupAsync(request: PopupRequest, popupName: string, popupWindowAttributes: PopupWindowAttributes, popup?: Window|null): Promise<AuthenticationResult> {\r\n this.logger.verbose(\"acquireTokenPopupAsync called\");\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenPopup);\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);\r\n const validRequest = await this.initializeAuthorizationRequest(request, InteractionType.Popup);\r\n this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);\r\n\r\n try {\r\n // Create auth code request and generate PKCE params\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, request.correlationId);\r\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(validRequest);\r\n\r\n // Initialize the client\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, request.correlationId);\r\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions);\r\n this.logger.verbose(\"Auth code client created\");\r\n\r\n const isNativeBroker = NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme);\r\n // Start measurement for server calls with native brokering enabled\r\n let fetchNativeAccountIdMeasurement;\r\n if (isNativeBroker) {\r\n fetchNativeAccountIdMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.FetchAccountIdWithNativeBroker, request.correlationId);\r\n }\r\n\r\n // Create acquire token url.\r\n const navigateUrl = await authClient.getAuthCodeUrl({\r\n ...validRequest,\r\n nativeBroker: isNativeBroker\r\n });\r\n\r\n // Create popup interaction handler.\r\n const interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.performanceClient);\r\n\r\n // Show the UI once the url has been created. Get the window handle for the popup.\r\n const popupParameters: PopupParams = {\r\n popup,\r\n popupName,\r\n popupWindowAttributes\r\n };\r\n const popupWindow: Window = this.initiateAuthRequest(navigateUrl, popupParameters);\r\n this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, {popupWindow}, null);\r\n\r\n // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.\r\n const hash = await this.monitorPopupForHash(popupWindow);\r\n // Deserialize hash fragment response parameters.\r\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\r\n const state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Popup, validRequest.correlationId);\r\n // Remove throttle if it exists\r\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, authCodeRequest);\r\n\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n // end measurement for server call with native brokering enabled\r\n if (fetchNativeAccountIdMeasurement) {\r\n fetchNativeAccountIdMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true\r\n });\r\n }\r\n\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.nativeStorage, validRequest.correlationId);\r\n const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);\r\n return nativeInteractionClient.acquireToken({\r\n ...validRequest,\r\n state: userRequestState,\r\n prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\r\n }).finally(() => {\r\n this.browserStorage.cleanRequestByState(state);\r\n });\r\n }\r\n\r\n // Handle response from hash string.\r\n const result = await interactionHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);\r\n\r\n return result;\r\n } catch (e) {\r\n if (popup) {\r\n // Close the synchronous popup if an error is thrown before the window unload event is registered\r\n popup.close();\r\n }\r\n\r\n if (e instanceof AuthError) {\r\n (e as AuthError).setCorrelationId(this.correlationId);\r\n }\r\n\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param validRequest\r\n * @param popupName\r\n * @param requestAuthority\r\n * @param popup\r\n * @param mainWindowRedirectUri\r\n * @param popupWindowAttributes\r\n */\r\n protected async logoutPopupAsync(validRequest: CommonEndSessionRequest, popupName: string, popupWindowAttributes: PopupWindowAttributes, requestAuthority?: string, popup?: Window|null, mainWindowRedirectUri?: string): Promise<void> {\r\n this.logger.verbose(\"logoutPopupAsync called\");\r\n this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Popup, validRequest);\r\n\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logoutPopup);\r\n\r\n try {\r\n // Clear cache on logout\r\n await this.clearCacheOnLogout(validRequest.account);\r\n\r\n // Initialize the client\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, validRequest.correlationId);\r\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, requestAuthority);\r\n this.logger.verbose(\"Auth code client created\");\r\n\r\n // Create logout string and navigate user window to logout.\r\n const logoutUri: string = authClient.getLogoutUri(validRequest);\r\n\r\n this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Popup, validRequest);\r\n\r\n // Open the popup window to requestUrl.\r\n const popupWindow = this.openPopup(logoutUri, {popupName, popupWindowAttributes, popup});\r\n this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, {popupWindow}, null);\r\n\r\n await this.waitForLogoutPopup(popupWindow);\r\n\r\n if (mainWindowRedirectUri) {\r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.logoutPopup,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n const absoluteUrl = UrlString.getAbsoluteUrl(mainWindowRedirectUri, BrowserUtils.getCurrentUri());\r\n\r\n this.logger.verbose(\"Redirecting main window to url specified in the request\");\r\n this.logger.verbosePii(`Redirecting main window to: ${absoluteUrl}`);\r\n this.navigationClient.navigateInternal(absoluteUrl, navigationOptions);\r\n } else {\r\n this.logger.verbose(\"No main window navigation requested\");\r\n }\r\n } catch (e) {\r\n if (popup) {\r\n // Close the synchronous popup if an error is thrown before the window unload event is registered\r\n popup.close();\r\n }\r\n\r\n if (e instanceof AuthError) {\r\n (e as AuthError).setCorrelationId(this.correlationId);\r\n }\r\n\r\n this.browserStorage.setInteractionInProgress(false);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Popup, null, e);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n throw e;\r\n }\r\n\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\r\n }\r\n\r\n /**\r\n * Opens a popup window with given request Url.\r\n * @param requestUrl\r\n */\r\n initiateAuthRequest(requestUrl: string, params: PopupParams): Window {\r\n // Check that request url is not empty.\r\n if (!StringUtils.isEmpty(requestUrl)) {\r\n this.logger.infoPii(`Navigate to: ${requestUrl}`);\r\n // Open the popup window to requestUrl.\r\n return this.openPopup(requestUrl, params);\r\n } else {\r\n // Throw error if request URL is empty.\r\n this.logger.error(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n }\r\n\r\n /**\r\n * Monitors a window until it loads a url with the same origin.\r\n * @param popupWindow - window that is being monitored\r\n * @param timeout - timeout for processing hash once popup is redirected back to application\r\n */\r\n monitorPopupForHash(popupWindow: Window): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n /*\r\n * Polling for popups needs to be tick-based,\r\n * since a non-trivial amount of time can be spent on interaction (which should not count against the timeout).\r\n */\r\n const maxTicks = this.config.system.windowHashTimeout / this.config.system.pollIntervalMilliseconds;\r\n let ticks = 0;\r\n\r\n this.logger.verbose(\"PopupHandler.monitorPopupForHash - polling started\");\r\n\r\n const intervalId = setInterval(() => {\r\n // Window is closed\r\n if (popupWindow.closed) {\r\n this.logger.error(\"PopupHandler.monitorPopupForHash - window closed\");\r\n this.cleanPopup();\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createUserCancelledError());\r\n return;\r\n }\r\n\r\n let href: string = Constants.EMPTY_STRING;\r\n let hash: string = Constants.EMPTY_STRING;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = popupWindow.location.href;\r\n hash = popupWindow.location.hash;\r\n } catch (e) {}\r\n\r\n // Don't process blank pages or cross domain\r\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\r\n return;\r\n }\r\n\r\n this.logger.verbose(\"PopupHandler.monitorPopupForHash - popup window is on same origin as caller\");\r\n\r\n /*\r\n * Only run clock when we are on same domain for popups\r\n * as popup operations can take a long time.\r\n */\r\n ticks++;\r\n\r\n if (hash) {\r\n this.logger.verbose(\"PopupHandler.monitorPopupForHash - found hash in url\");\r\n clearInterval(intervalId);\r\n this.cleanPopup(popupWindow);\r\n\r\n if (UrlString.hashContainsKnownProperties(hash)) {\r\n this.logger.verbose(\"PopupHandler.monitorPopupForHash - hash contains known properties, returning.\");\r\n resolve(hash);\r\n } else {\r\n this.logger.error(\"PopupHandler.monitorPopupForHash - found hash in url but it does not contain known properties. Check that your router is not changing the hash prematurely.\");\r\n this.logger.errorPii(`PopupHandler.monitorPopupForHash - hash found: ${hash}`);\r\n reject(BrowserAuthError.createHashDoesNotContainKnownPropertiesError());\r\n }\r\n } else if (ticks > maxTicks) {\r\n this.logger.error(\"PopupHandler.monitorPopupForHash - unable to find hash in url, timing out\");\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createMonitorPopupTimeoutError());\r\n }\r\n }, this.config.system.pollIntervalMilliseconds);\r\n });\r\n }\r\n\r\n /**\r\n * Waits for user interaction in logout popup window\r\n * @param popupWindow\r\n * @returns\r\n */\r\n waitForLogoutPopup(popupWindow: Window): Promise<void> {\r\n return new Promise((resolve) => {\r\n this.logger.verbose(\"PopupHandler.waitForLogoutPopup - polling started\");\r\n\r\n const intervalId = setInterval(() => {\r\n // Window is closed\r\n if (popupWindow.closed) {\r\n this.logger.error(\"PopupHandler.waitForLogoutPopup - window closed\");\r\n this.cleanPopup();\r\n clearInterval(intervalId);\r\n resolve();\r\n }\r\n\r\n let href: string = Constants.EMPTY_STRING;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = popupWindow.location.href;\r\n } catch (e) {}\r\n\r\n // Don't process blank pages or cross domain\r\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\r\n return;\r\n }\r\n\r\n this.logger.verbose(\"PopupHandler.waitForLogoutPopup - popup window is on same origin as caller, closing.\");\r\n\r\n clearInterval(intervalId);\r\n this.cleanPopup(popupWindow);\r\n resolve();\r\n }, this.config.system.pollIntervalMilliseconds);\r\n });\r\n }\r\n\r\n /**\r\n * @hidden\r\n *\r\n * Configures popup window for login.\r\n *\r\n * @param urlNavigate\r\n * @param title\r\n * @param popUpWidth\r\n * @param popUpHeight\r\n * @param popupWindowAttributes\r\n * @ignore\r\n * @hidden\r\n */\r\n openPopup(urlNavigate: string, popupParams: PopupParams): Window {\r\n try {\r\n let popupWindow;\r\n // Popup window passed in, setting url to navigate to\r\n if (popupParams.popup) {\r\n popupWindow = popupParams.popup;\r\n this.logger.verbosePii(`Navigating popup window to: ${urlNavigate}`);\r\n popupWindow.location.assign(urlNavigate);\r\n } else if (typeof popupParams.popup === \"undefined\") {\r\n // Popup will be undefined if it was not passed in\r\n this.logger.verbosePii(`Opening popup window to: ${urlNavigate}`);\r\n popupWindow = this.openSizedPopup(urlNavigate, popupParams.popupName, popupParams.popupWindowAttributes);\r\n }\r\n\r\n // Popup will be null if popups are blocked\r\n if (!popupWindow) {\r\n throw BrowserAuthError.createEmptyWindowCreatedError();\r\n }\r\n if (popupWindow.focus) {\r\n popupWindow.focus();\r\n }\r\n this.currentWindow = popupWindow;\r\n window.addEventListener(\"beforeunload\", this.unloadWindow);\r\n\r\n return popupWindow;\r\n } catch (e) {\r\n this.logger.error(\"error opening popup \" + (e as AuthError).message);\r\n this.browserStorage.setInteractionInProgress(false);\r\n throw BrowserAuthError.createPopupWindowError((e as AuthError).toString());\r\n }\r\n }\r\n\r\n /**\r\n * Helper function to set popup window dimensions and position\r\n * @param urlNavigate\r\n * @param popupName\r\n * @param popupWindowAttributes\r\n * @returns\r\n */\r\n openSizedPopup(urlNavigate: string, popupName: string, popupWindowAttributes: PopupWindowAttributes): Window|null {\r\n /**\r\n * adding winLeft and winTop to account for dual monitor\r\n * using screenLeft and screenTop for IE8 and earlier\r\n */\r\n const winLeft = window.screenLeft ? window.screenLeft : window.screenX;\r\n const winTop = window.screenTop ? window.screenTop : window.screenY;\r\n /**\r\n * window.innerWidth displays browser window\"s height and width excluding toolbars\r\n * using document.documentElement.clientWidth for IE8 and earlier\r\n */\r\n const winWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\r\n const winHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\r\n\r\n let width = popupWindowAttributes.popupSize?.width;\r\n let height = popupWindowAttributes.popupSize?.height;\r\n let top = popupWindowAttributes.popupPosition?.top;\r\n let left = popupWindowAttributes.popupPosition?.left;\r\n\r\n if (!width || width < 0 || width > winWidth) {\r\n this.logger.verbose(\"Default popup window width used. Window width not configured or invalid.\");\r\n width = BrowserConstants.POPUP_WIDTH;\r\n }\r\n\r\n if (!height || height < 0 || height > winHeight) {\r\n this.logger.verbose(\"Default popup window height used. Window height not configured or invalid.\");\r\n height = BrowserConstants.POPUP_HEIGHT;\r\n }\r\n\r\n if (!top || top < 0 || top > winHeight) {\r\n this.logger.verbose(\"Default popup window top position used. Window top not configured or invalid.\");\r\n top = Math.max(0, ((winHeight / 2) - (BrowserConstants.POPUP_HEIGHT / 2)) + winTop);\r\n }\r\n\r\n if (!left || left < 0 || left > winWidth) {\r\n this.logger.verbose(\"Default popup window left position used. Window left not configured or invalid.\");\r\n left = Math.max(0, ((winWidth / 2) - (BrowserConstants.POPUP_WIDTH / 2)) + winLeft);\r\n }\r\n\r\n return window.open(urlNavigate, popupName, `width=${width}, height=${height}, top=${top}, left=${left}, scrollbars=yes`);\r\n }\r\n\r\n /**\r\n * Event callback to unload main window.\r\n */\r\n unloadWindow(e: Event): void {\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Popup);\r\n if (this.currentWindow) {\r\n this.currentWindow.close();\r\n }\r\n // Guarantees browser unload will happen, so no other errors will be thrown.\r\n e.preventDefault();\r\n }\r\n\r\n /**\r\n * Closes popup, removes any state vars created during popup calls.\r\n * @param popupWindow\r\n */\r\n cleanPopup(popupWindow?: Window): void {\r\n if (popupWindow) {\r\n // Close window.\r\n popupWindow.close();\r\n }\r\n // Remove window unload function\r\n window.removeEventListener(\"beforeunload\", this.unloadWindow);\r\n\r\n // Interaction is completed - remove interaction status.\r\n this.browserStorage.setInteractionInProgress(false);\r\n }\r\n\r\n /**\r\n * Generates the name for the popup based on the client id and request\r\n * @param clientId\r\n * @param request\r\n */\r\n generatePopupName(scopes: Array<string>, authority: string): string {\r\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${scopes.join(\"-\")}.${authority}.${this.correlationId}`;\r\n }\r\n\r\n /**\r\n * Generates the name for the popup based on the client id and request for logouts\r\n * @param clientId\r\n * @param request\r\n */\r\n generateLogoutPopupName(request: CommonEndSessionRequest): string {\r\n const homeAccountId = request.account && request.account.homeAccountId;\r\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${homeAccountId}.${this.correlationId}`;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthorizationCodeClient, StringUtils, CommonAuthorizationCodeRequest, ICrypto, AuthenticationResult, Authority, INetworkModule, ClientAuthError, Logger, ServerError, IPerformanceClient } from \"@azure/msal-common\";\r\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\r\nimport { ApiId, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { InteractionHandler, InteractionParams } from \"./InteractionHandler\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\r\n\r\nexport type RedirectParams = InteractionParams & {\r\n navigationClient: INavigationClient;\r\n redirectTimeout: number;\r\n redirectStartPage: string;\r\n onRedirectNavigate?: (url: string) => void | boolean;\r\n};\r\n\r\nexport class RedirectHandler extends InteractionHandler {\r\n\r\n private browserCrypto: ICrypto;\r\n\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, browserCrypto: ICrypto, performanceClient: IPerformanceClient) {\r\n super(authCodeModule, storageImpl, authCodeRequest, logger, performanceClient);\r\n this.browserCrypto = browserCrypto;\r\n }\r\n\r\n /**\r\n * Redirects window to given URL.\r\n * @param urlNavigate\r\n */\r\n async initiateAuthRequest(requestUrl: string, params: RedirectParams): Promise<void> {\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest called\");\r\n // Navigate if valid URL\r\n if (!StringUtils.isEmpty(requestUrl)) {\r\n // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true\r\n if (params.redirectStartPage) {\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page\");\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true);\r\n }\r\n\r\n // Set interaction status in the library.\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, this.authCodeRequest.correlationId, true);\r\n this.browserStorage.cacheCodeRequest(this.authCodeRequest, this.browserCrypto);\r\n this.logger.infoPii(`RedirectHandler.initiateAuthRequest: Navigate to: ${requestUrl}`);\r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.acquireTokenRedirect,\r\n timeout: params.redirectTimeout,\r\n noHistory: false\r\n };\r\n \r\n // If onRedirectNavigate is implemented, invoke it and provide requestUrl\r\n if (typeof params.onRedirectNavigate === \"function\") {\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback\");\r\n const navigate = params.onRedirectNavigate(requestUrl);\r\n\r\n // Returning false from onRedirectNavigate will stop navigation\r\n if (navigate !== false) {\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating\");\r\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\r\n return;\r\n } else {\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation\");\r\n return;\r\n }\r\n } else {\r\n // Navigate window to request URL\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: Navigating window to navigate url\");\r\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\r\n return;\r\n }\r\n } else {\r\n // Throw error if request URL is empty.\r\n this.logger.info(\"RedirectHandler.initiateAuthRequest: Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n }\r\n\r\n /**\r\n * Handle authorization code response in the window.\r\n * @param hash\r\n */\r\n async handleCodeResponseFromHash(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule): Promise<AuthenticationResult> {\r\n this.logger.verbose(\"RedirectHandler.handleCodeResponse called\");\r\n\r\n // Check that location hash isn't empty.\r\n if (StringUtils.isEmpty(locationHash)) {\r\n throw BrowserAuthError.createEmptyHashError(locationHash);\r\n }\r\n\r\n // Interaction is completed - remove interaction status.\r\n this.browserStorage.setInteractionInProgress(false);\r\n\r\n // Handle code response.\r\n const stateKey = this.browserStorage.generateStateKey(state);\r\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n\r\n let authCodeResponse;\r\n try {\r\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\r\n } catch (e) {\r\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\r\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\r\n throw BrowserAuthError.createUserCancelledError();\r\n } else {\r\n throw e;\r\n }\r\n }\r\n\r\n // Get cached items\r\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\r\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\r\n\r\n // Assign code to request\r\n this.authCodeRequest.code = authCodeResponse.code;\r\n\r\n // Check for new cloud instance\r\n if (authCodeResponse.cloud_instance_host_name) {\r\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\r\n }\r\n\r\n authCodeResponse.nonce = cachedNonce || undefined;\r\n authCodeResponse.state = requestState;\r\n\r\n // Add CCS parameters if available\r\n if (authCodeResponse.client_info) {\r\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\r\n } else {\r\n const cachedCcsCred = this.checkCcsCredentials();\r\n if (cachedCcsCred) {\r\n this.authCodeRequest.ccsCredential = cachedCcsCred;\r\n }\r\n }\r\n\r\n // Acquire token with retrieved code.\r\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\r\n\r\n this.browserStorage.cleanRequestByState(state);\r\n return tokenResponse;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, CommonAuthorizationCodeRequest, AuthorizationCodeClient, UrlString, AuthError, ServerTelemetryManager, Constants, ProtocolUtils, ServerAuthorizationCodeResponse, ThrottlingUtils, ICrypto, Logger, IPerformanceClient, PerformanceEvents } from \"@azure/msal-common\";\r\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\r\nimport { ApiId, InteractionType, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\r\nimport { RedirectHandler } from \"../interaction_handler/RedirectHandler\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\r\nimport { EventType } from \"../event/EventType\";\r\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { NativeInteractionClient } from \"./NativeInteractionClient\";\r\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\r\nimport { BrowserConfiguration } from \"../config/Configuration\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { EventHandler } from \"../event/EventHandler\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\n\r\nexport class RedirectClient extends StandardInteractionClient {\r\n protected nativeStorage: BrowserCacheManager;\r\n\r\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\r\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\r\n this.nativeStorage = nativeStorageImpl;\r\n }\r\n\r\n /**\r\n * Redirects the page to the /authorize endpoint of the IDP\r\n * @param request\r\n */\r\n async acquireToken(request: RedirectRequest): Promise<void> {\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);\r\n const validRequest = await this.initializeAuthorizationRequest(request, InteractionType.Redirect);\r\n this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenRedirect);\r\n\r\n const handleBackButton = (event: PageTransitionEvent) => {\r\n // Clear temporary cache if the back button is clicked during the redirect flow.\r\n if (event.persisted) {\r\n this.logger.verbose(\"Page was restored from back/forward cache. Clearing temporary cache.\");\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n this.eventHandler.emitEvent(EventType.RESTORE_FROM_BFCACHE, InteractionType.Redirect);\r\n }\r\n };\r\n\r\n try {\r\n // Create auth code request and generate PKCE params\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, request.correlationId);\r\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(validRequest);\r\n\r\n // Initialize the client\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, request.correlationId);\r\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions);\r\n this.logger.verbose(\"Auth code client created\");\r\n\r\n // Create redirect interaction handler.\r\n const interactionHandler = new RedirectHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.browserCrypto, this.performanceClient);\r\n\r\n // Create acquire token url.\r\n const navigateUrl = await authClient.getAuthCodeUrl({\r\n ...validRequest,\r\n nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme)\r\n });\r\n\r\n const redirectStartPage = this.getRedirectStartPage(request.redirectStartPage);\r\n this.logger.verbosePii(`Redirect start page: ${redirectStartPage}`);\r\n\r\n // Clear temporary cache if the back button is clicked during the redirect flow.\r\n window.addEventListener(\"pageshow\", handleBackButton);\r\n\r\n // Show the UI once the url has been created. Response will come back in the hash, which will be handled in the handleRedirectCallback function.\r\n return await interactionHandler.initiateAuthRequest(navigateUrl, {\r\n navigationClient: this.navigationClient,\r\n redirectTimeout: this.config.system.redirectNavigationTimeout,\r\n redirectStartPage: redirectStartPage,\r\n onRedirectNavigate: request.onRedirectNavigate\r\n });\r\n } catch (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(this.correlationId);\r\n }\r\n window.removeEventListener(\"pageshow\", handleBackButton);\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Checks if navigateToLoginRequestUrl is set, and:\r\n * - if true, performs logic to cache and navigate\r\n * - if false, handles hash string and parses response\r\n * @param hash\r\n */\r\n async handleRedirectPromise(hash?: string): Promise<AuthenticationResult | null> {\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.handleRedirectPromise);\r\n try {\r\n if (!this.browserStorage.isInteractionInProgress(true)) {\r\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\r\n return null;\r\n }\r\n\r\n const responseHash = this.getRedirectResponseHash(hash || window.location.hash);\r\n if (!responseHash) {\r\n // Not a recognized server response hash or hash not associated with a redirect request\r\n this.logger.info(\"handleRedirectPromise did not detect a response hash as a result of a redirect. Cleaning temporary cache.\");\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n return null;\r\n }\r\n\r\n let state: string;\r\n try {\r\n // Deserialize hash fragment response parameters.\r\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(responseHash);\r\n state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Redirect);\r\n this.logger.verbose(\"State extracted from hash\");\r\n } catch (e) {\r\n this.logger.info(`handleRedirectPromise was unable to extract state due to: ${e}`);\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n return null;\r\n }\r\n\r\n // If navigateToLoginRequestUrl is true, get the url where the redirect request was initiated\r\n const loginRequestUrl = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, true) || Constants.EMPTY_STRING;\r\n const loginRequestUrlNormalized = UrlString.removeHashFromUrl(loginRequestUrl);\r\n const currentUrlNormalized = UrlString.removeHashFromUrl(window.location.href);\r\n\r\n if (loginRequestUrlNormalized === currentUrlNormalized && this.config.auth.navigateToLoginRequestUrl) {\r\n // We are on the page we need to navigate to - handle hash\r\n this.logger.verbose(\"Current page is loginRequestUrl, handling hash\");\r\n const handleHashResult = await this.handleHash(responseHash, state, serverTelemetryManager);\r\n\r\n if (loginRequestUrl.indexOf(\"#\") > -1) {\r\n // Replace current hash with non-msal hash, if present\r\n BrowserUtils.replaceHash(loginRequestUrl);\r\n }\r\n\r\n return handleHashResult;\r\n } else if (!this.config.auth.navigateToLoginRequestUrl) {\r\n this.logger.verbose(\"NavigateToLoginRequestUrl set to false, handling hash\");\r\n return this.handleHash(responseHash, state, serverTelemetryManager);\r\n } else if (!BrowserUtils.isInIframe() || this.config.system.allowRedirectInIframe) {\r\n /*\r\n * Returned from authority using redirect - need to perform navigation before processing response\r\n * Cache the hash to be retrieved after the next redirect\r\n */\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.URL_HASH, responseHash, true);\r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.handleRedirectPromise,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: true\r\n };\r\n\r\n /**\r\n * Default behavior is to redirect to the start page and not process the hash now.\r\n * The start page is expected to also call handleRedirectPromise which will process the hash in one of the checks above.\r\n */\r\n let processHashOnRedirect: boolean = true;\r\n if (!loginRequestUrl || loginRequestUrl === \"null\") {\r\n // Redirect to home page if login request url is null (real null or the string null)\r\n const homepage = BrowserUtils.getHomepage();\r\n // Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, homepage, true);\r\n this.logger.warning(\"Unable to get valid login request url from cache, redirecting to home page\");\r\n processHashOnRedirect = await this.navigationClient.navigateInternal(homepage, navigationOptions);\r\n } else {\r\n // Navigate to page that initiated the redirect request\r\n this.logger.verbose(`Navigating to loginRequestUrl: ${loginRequestUrl}`);\r\n processHashOnRedirect = await this.navigationClient.navigateInternal(loginRequestUrl, navigationOptions);\r\n }\r\n\r\n // If navigateInternal implementation returns false, handle the hash now\r\n if (!processHashOnRedirect) {\r\n return this.handleHash(responseHash, state, serverTelemetryManager);\r\n }\r\n }\r\n\r\n return null;\r\n } catch (e) {\r\n if (e instanceof AuthError) {\r\n (e as AuthError).setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the response hash for a redirect request\r\n * Returns null if interactionType in the state value is not \"redirect\" or the hash does not contain known properties\r\n * @param hash\r\n */\r\n protected getRedirectResponseHash(hash: string): string | null {\r\n this.logger.verbose(\"getRedirectResponseHash called\");\r\n // Get current location hash from window or cache.\r\n const isResponseHash: boolean = UrlString.hashContainsKnownProperties(hash);\r\n\r\n if (isResponseHash) {\r\n BrowserUtils.clearHash(window);\r\n this.logger.verbose(\"Hash contains known properties, returning response hash\");\r\n return hash;\r\n }\r\n\r\n const cachedHash = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.URL_HASH, true);\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.URL_HASH));\r\n\r\n this.logger.verbose(\"Hash does not contain known properties, returning cached hash\");\r\n return cachedHash;\r\n }\r\n\r\n /**\r\n * Checks if hash exists and handles in window.\r\n * @param hash\r\n * @param state\r\n */\r\n protected async handleHash(hash: string, state: string, serverTelemetryManager: ServerTelemetryManager): Promise<AuthenticationResult> {\r\n const cachedRequest = this.browserStorage.getCachedRequest(state, this.browserCrypto);\r\n this.logger.verbose(\"handleHash called, retrieved cached request\");\r\n\r\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\r\n\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.nativeStorage, cachedRequest.correlationId);\r\n const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);\r\n return nativeInteractionClient.acquireToken({\r\n ...cachedRequest,\r\n state: userRequestState,\r\n prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\r\n }).finally(() => {\r\n this.browserStorage.cleanRequestByState(state);\r\n });\r\n }\r\n\r\n // Hash contains known properties - handle and return in callback\r\n const currentAuthority = this.browserStorage.getCachedAuthority(state);\r\n if (!currentAuthority) {\r\n throw BrowserAuthError.createNoCachedAuthorityError();\r\n }\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, cachedRequest.correlationId);\r\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, currentAuthority);\r\n this.logger.verbose(\"Auth code client created\");\r\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, cachedRequest);\r\n const interactionHandler = new RedirectHandler(authClient, this.browserStorage, cachedRequest, this.logger, this.browserCrypto, this.performanceClient);\r\n return await interactionHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);\r\n }\r\n\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param logoutRequest\r\n */\r\n async logout(logoutRequest?: EndSessionRequest): Promise<void> {\r\n this.logger.verbose(\"logoutRedirect called\");\r\n const validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logout);\r\n\r\n try {\r\n this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Redirect, logoutRequest);\r\n\r\n // Clear cache on logout\r\n await this.clearCacheOnLogout(validLogoutRequest.account);\r\n\r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.logout,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, validLogoutRequest.correlationId);\r\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, logoutRequest && logoutRequest.authority);\r\n this.logger.verbose(\"Auth code client created\");\r\n\r\n // Create logout string and navigate user window to logout.\r\n const logoutUri: string = authClient.getLogoutUri(validLogoutRequest);\r\n\r\n this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Redirect, validLogoutRequest);\r\n // Check if onRedirectNavigate is implemented, and invoke it if so\r\n if (logoutRequest && typeof logoutRequest.onRedirectNavigate === \"function\") {\r\n const navigate = logoutRequest.onRedirectNavigate(logoutUri);\r\n\r\n if (navigate !== false) {\r\n this.logger.verbose(\"Logout onRedirectNavigate did not return false, navigating\");\r\n // Ensure interaction is in progress\r\n if (!this.browserStorage.getInteractionInProgress()) {\r\n this.browserStorage.setInteractionInProgress(true);\r\n }\r\n await this.navigationClient.navigateExternal(logoutUri, navigationOptions);\r\n return;\r\n } else {\r\n // Ensure interaction is not in progress\r\n this.browserStorage.setInteractionInProgress(false);\r\n this.logger.verbose(\"Logout onRedirectNavigate returned false, stopping navigation\");\r\n }\r\n } else {\r\n // Ensure interaction is in progress\r\n if (!this.browserStorage.getInteractionInProgress()) {\r\n this.browserStorage.setInteractionInProgress(true);\r\n }\r\n await this.navigationClient.navigateExternal(logoutUri, navigationOptions);\r\n return;\r\n }\r\n } catch(e) {\r\n if (e instanceof AuthError) {\r\n (e as AuthError).setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Redirect, null, e);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\r\n throw e;\r\n }\r\n\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\r\n }\r\n\r\n /**\r\n * Use to get the redirectStartPage either from request or use current window\r\n * @param requestStartPage\r\n */\r\n protected getRedirectStartPage(requestStartPage?: string): string {\r\n const redirectStartPage = requestStartPage || window.location.href;\r\n return UrlString.getAbsoluteUrl(redirectStartPage, BrowserUtils.getCurrentUri());\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { UrlString, StringUtils, CommonAuthorizationCodeRequest, AuthorizationCodeClient, Constants, Logger, IPerformanceClient, PerformanceEvents } from \"@azure/msal-common\";\r\nimport { InteractionHandler } from \"./InteractionHandler\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { BrowserSystemOptions, DEFAULT_IFRAME_TIMEOUT_MS } from \"../config/Configuration\";\r\n\r\nexport class SilentHandler extends InteractionHandler {\r\n\r\n private navigateFrameWait: number;\r\n private pollIntervalMilliseconds: number;\r\n\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, systemOptions: Required<Pick<BrowserSystemOptions, \"navigateFrameWait\" | \"pollIntervalMilliseconds\">>, performanceClient: IPerformanceClient) {\r\n super(authCodeModule, storageImpl, authCodeRequest, logger, performanceClient);\r\n this.navigateFrameWait = systemOptions.navigateFrameWait;\r\n this.pollIntervalMilliseconds = systemOptions.pollIntervalMilliseconds;\r\n }\r\n\r\n /**\r\n * Creates a hidden iframe to given URL using user-requested scopes as an id.\r\n * @param urlNavigate\r\n * @param userRequestScopes\r\n */\r\n async initiateAuthRequest(requestUrl: string): Promise<HTMLIFrameElement> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerInitiateAuthRequest, this.authCodeRequest.correlationId);\r\n\r\n if (StringUtils.isEmpty(requestUrl)) {\r\n // Throw error if request URL is empty.\r\n this.logger.info(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n\r\n if (this.navigateFrameWait) {\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentHandlerLoadFrame, this.authCodeRequest.correlationId);\r\n return await this.loadFrame(requestUrl);\r\n }\r\n return this.loadFrameSync(requestUrl);\r\n }\r\n\r\n /**\r\n * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout.\r\n * @param iframe\r\n * @param timeout\r\n */\r\n monitorIframeForHash(iframe: HTMLIFrameElement, timeout: number): Promise<string> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerMonitorIframeForHash, this.authCodeRequest.correlationId);\r\n\r\n return new Promise((resolve, reject) => {\r\n if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {\r\n this.logger.warning(`system.loadFrameTimeout or system.iframeHashTimeout set to lower (${timeout}ms) than the default (${DEFAULT_IFRAME_TIMEOUT_MS}ms). This may result in timeouts.`);\r\n }\r\n\r\n /*\r\n * Polling for iframes can be purely timing based,\r\n * since we don't need to account for interaction.\r\n */\r\n const nowMark = window.performance.now();\r\n const timeoutMark = nowMark + timeout;\r\n\r\n const intervalId = setInterval(() => {\r\n if (window.performance.now() > timeoutMark) {\r\n this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createMonitorIframeTimeoutError());\r\n return;\r\n }\r\n\r\n let href: string = Constants.EMPTY_STRING;\r\n const contentWindow = iframe.contentWindow;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = contentWindow ? contentWindow.location.href : Constants.EMPTY_STRING;\r\n } catch (e) {}\r\n\r\n if (StringUtils.isEmpty(href)) {\r\n return;\r\n }\r\n\r\n const contentHash = contentWindow ? contentWindow.location.hash: Constants.EMPTY_STRING;\r\n if (UrlString.hashContainsKnownProperties(contentHash)) {\r\n // Success case\r\n this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n resolve(contentHash);\r\n return;\r\n }\r\n }, this.pollIntervalMilliseconds);\r\n });\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Loads iframe with authorization endpoint URL\r\n * @ignore\r\n */\r\n private loadFrame(urlNavigate: string): Promise<HTMLIFrameElement> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerLoadFrame, this.authCodeRequest.correlationId);\r\n\r\n /*\r\n * This trick overcomes iframe navigation in IE\r\n * IE does not load the page consistently in iframe\r\n */\r\n\r\n return new Promise((resolve, reject) => {\r\n const frameHandle = this.createHiddenIframe();\r\n\r\n setTimeout(() => {\r\n if (!frameHandle) {\r\n reject(\"Unable to load iframe\");\r\n return;\r\n }\r\n\r\n frameHandle.src = urlNavigate;\r\n\r\n resolve(frameHandle);\r\n }, this.navigateFrameWait);\r\n });\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Loads the iframe synchronously when the navigateTimeFrame is set to `0`\r\n * @param urlNavigate\r\n * @param frameName\r\n * @param logger\r\n */\r\n private loadFrameSync(urlNavigate: string): HTMLIFrameElement{\r\n const frameHandle = this.createHiddenIframe();\r\n\r\n frameHandle.src = urlNavigate;\r\n\r\n return frameHandle;\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Creates a new hidden iframe or gets an existing one for silent token renewal.\r\n * @ignore\r\n */\r\n private createHiddenIframe(): HTMLIFrameElement {\r\n const authFrame = document.createElement(\"iframe\");\r\n\r\n authFrame.style.visibility = \"hidden\";\r\n authFrame.style.position = \"absolute\";\r\n authFrame.style.width = authFrame.style.height = \"0\";\r\n authFrame.style.border = \"0\";\r\n authFrame.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin allow-forms\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(authFrame);\r\n\r\n return authFrame;\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Removes a hidden iframe from the page.\r\n * @ignore\r\n */\r\n private removeHiddenIframe(iframe: HTMLIFrameElement): void {\r\n if (document.body === iframe.parentNode) {\r\n document.body.removeChild(iframe);\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, ICrypto, Logger, StringUtils, PromptValue, CommonAuthorizationCodeRequest, AuthorizationCodeClient, AuthError, Constants, UrlString, ServerAuthorizationCodeResponse, ProtocolUtils, IPerformanceClient, PerformanceEvents } from \"@azure/msal-common\";\r\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\r\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\r\nimport { BrowserConfiguration } from \"../config/Configuration\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { EventHandler } from \"../event/EventHandler\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { InteractionType, ApiId } from \"../utils/BrowserConstants\";\r\nimport { SilentHandler } from \"../interaction_handler/SilentHandler\";\r\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\r\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\r\nimport { NativeInteractionClient } from \"./NativeInteractionClient\";\r\n\r\nexport class SilentIframeClient extends StandardInteractionClient {\r\n protected apiId: ApiId;\r\n protected nativeStorage: BrowserCacheManager;\r\n\r\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\r\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\r\n this.apiId = apiId;\r\n this.nativeStorage = nativeStorageImpl;\r\n }\r\n\r\n /**\r\n * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none or prompt=no_session\r\n * @param request\r\n */\r\n async acquireToken(request: SsoSilentRequest): Promise<AuthenticationResult> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\r\n this.logger.verbose(\"acquireTokenByIframe called\");\r\n const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\r\n // Check that we have some SSO data\r\n if (StringUtils.isEmpty(request.loginHint) && StringUtils.isEmpty(request.sid) && (!request.account || StringUtils.isEmpty(request.account.username))) {\r\n this.logger.warning(\"No user hint provided. The authorization server may need more information to complete this request.\");\r\n }\r\n\r\n // Check that prompt is set to none or no_session, throw error if it is set to anything else.\r\n if (request.prompt && (request.prompt !== PromptValue.NONE) && (request.prompt !== PromptValue.NO_SESSION)) {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw BrowserAuthError.createSilentPromptValueError(request.prompt);\r\n }\r\n\r\n // Create silent request\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);\r\n const silentRequest: AuthorizationUrlRequest = await this.initializeAuthorizationRequest({\r\n ...request,\r\n prompt: request.prompt || PromptValue.NONE\r\n }, InteractionType.Silent);\r\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\r\n\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\r\n\r\n try {\r\n // Initialize the client\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, request.correlationId);\r\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\r\n this.logger.verbose(\"Auth code client created\");\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentIframeClientTokenHelper, request.correlationId);\r\n return await this.silentTokenHelper(authClient, silentRequest).then((result: AuthenticationResult) => {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: false,\r\n requestId: result.requestId\r\n });\r\n return result;\r\n });\r\n } catch (e) {\r\n if (e instanceof AuthError) {\r\n (e as AuthError).setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByState(silentRequest.state);\r\n acquireTokenMeasurement.endMeasurement({\r\n errorCode: e instanceof AuthError && e.errorCode || undefined,\r\n subErrorCode: e instanceof AuthError && e.subError || undefined,\r\n success: false\r\n });\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Currently Unsupported\r\n */\r\n logout(): Promise<void> {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n }\r\n\r\n /**\r\n * Helper which acquires an authorization code silently using a hidden iframe from given url\r\n * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens.\r\n * @param navigateUrl\r\n * @param userRequestScopes\r\n */\r\n protected async silentTokenHelper(authClient: AuthorizationCodeClient, silentRequest: AuthorizationUrlRequest): Promise<AuthenticationResult> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientTokenHelper, silentRequest.correlationId);\r\n\r\n // Create auth code request and generate PKCE params\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, silentRequest.correlationId);\r\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(silentRequest);\r\n // Create authorize request url\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.GetAuthCodeUrl, silentRequest.correlationId);\r\n const navigateUrl = await authClient.getAuthCodeUrl({\r\n ...silentRequest,\r\n nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, silentRequest.authenticationScheme)\r\n });\r\n\r\n // Create silent handler\r\n const silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system, this.performanceClient);\r\n // Get the frame handle for the silent request\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentHandlerInitiateAuthRequest, silentRequest.correlationId);\r\n const msalFrame = await silentHandler.initiateAuthRequest(navigateUrl);\r\n // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentHandlerMonitorIframeForHash, silentRequest.correlationId);\r\n const hash = await silentHandler.monitorIframeForHash(msalFrame, this.config.system.iframeHashTimeout);\r\n // Deserialize hash fragment response parameters.\r\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\r\n const state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Silent, authCodeRequest.correlationId);\r\n\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.apiId, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.browserStorage, this.correlationId);\r\n const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);\r\n return nativeInteractionClient.acquireToken({\r\n ...silentRequest,\r\n state: userRequestState,\r\n prompt: silentRequest.prompt || PromptValue.NONE\r\n }).finally(() => {\r\n this.browserStorage.cleanRequestByState(state);\r\n });\r\n }\r\n\r\n // Handle response from hash string\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.HandleCodeResponseFromHash, silentRequest.correlationId);\r\n return silentHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\r\nimport { CommonSilentFlowRequest, AuthenticationResult, ServerTelemetryManager, RefreshTokenClient, AuthError, AzureCloudOptions, PerformanceEvents } from \"@azure/msal-common\";\r\nimport { ApiId } from \"../utils/BrowserConstants\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\n\r\nexport class SilentRefreshClient extends StandardInteractionClient {\r\n /**\r\n * Exchanges the refresh token for new tokens\r\n * @param request\r\n */\r\n async acquireToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, request.correlationId);\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeBaseRequest, request.correlationId);\r\n const silentRequest: CommonSilentFlowRequest = {\r\n ...request,\r\n ...await this.initializeBaseRequest(request, request.account)\r\n };\r\n const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, silentRequest.correlationId);\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\r\n\r\n const refreshTokenClient = await this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\r\n this.logger.verbose(\"Refresh token client created\");\r\n // Send request to renew token. Auth module will throw errors if token cannot be renewed.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);\r\n return refreshTokenClient.acquireTokenByRefreshToken(silentRequest)\r\n .then((result: AuthenticationResult) => {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: result.fromCache,\r\n requestId: result.requestId\r\n });\r\n\r\n return result;\r\n })\r\n .catch((e: AuthError) => {\r\n if (e instanceof AuthError) {\r\n (e as AuthError).setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n acquireTokenMeasurement.endMeasurement({\r\n errorCode: e.errorCode,\r\n subErrorCode: e.subError,\r\n success: false\r\n });\r\n throw e;\r\n });\r\n }\r\n\r\n /**\r\n * Currently Unsupported\r\n */\r\n logout(): Promise<void> {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n }\r\n\r\n /**\r\n * Creates a Refresh Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n protected async createRefreshTokenClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, azureCloudOptions?: AzureCloudOptions): Promise<RefreshTokenClient> {\r\n // Create auth module.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);\r\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions);\r\n return new RefreshTokenClient(clientConfig, this.performanceClient);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AccessTokenEntity, ICrypto, IdTokenEntity, Logger, ScopeSet, Authority, AuthorityOptions, ExternalTokenResponse, AccountEntity, AuthToken, RefreshTokenEntity , AuthorityType, CacheRecord, AuthenticationResult, Constants } from \"@azure/msal-common\";\r\nimport { BrowserConfiguration } from \"../config/Configuration\";\r\nimport { SilentRequest } from \"../request/SilentRequest\";\r\nimport { BrowserCacheManager } from \"./BrowserCacheManager\";\r\nimport { ITokenCache } from \"./ITokenCache\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\n\r\nexport type LoadTokenOptions = {\r\n clientInfo?: string,\r\n expiresOn?: number,\r\n extendedExpiresOn?: number\r\n};\r\n\r\n/**\r\n * Token cache manager\r\n */\r\nexport class TokenCache implements ITokenCache {\r\n // Flag to indicate if in browser environment\r\n public isBrowserEnvironment: boolean;\r\n // Input configuration by developer/user\r\n protected config: BrowserConfiguration;\r\n // Browser cache storage\r\n private storage: BrowserCacheManager;\r\n // Logger\r\n private logger: Logger;\r\n // Crypto class\r\n private cryptoObj: ICrypto;\r\n\r\n constructor(configuration: BrowserConfiguration, storage: BrowserCacheManager, logger: Logger, cryptoObj: ICrypto) {\r\n this.isBrowserEnvironment = typeof window !== \"undefined\";\r\n this.config = configuration;\r\n this.storage = storage;\r\n this.logger = logger;\r\n this.cryptoObj = cryptoObj;\r\n }\r\n\r\n // Move getAllAccounts here and cache utility APIs\r\n\r\n /**\r\n * API to load tokens to msal-browser cache.\r\n * @param request\r\n * @param response\r\n * @param options\r\n * @returns `AuthenticationResult` for the response that was loaded.\r\n */\r\n loadExternalTokens(request: SilentRequest, response: ExternalTokenResponse, options: LoadTokenOptions): AuthenticationResult {\r\n this.logger.info(\"TokenCache - loadExternalTokens called\");\r\n\r\n if (!response.id_token) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes id token.\");\r\n }\r\n\r\n const idToken = new AuthToken(response.id_token, this.cryptoObj);\r\n\r\n let cacheRecord: CacheRecord | undefined;\r\n let authority: Authority | undefined;\r\n\r\n if (request.account) {\r\n const cacheRecordAccount = this.loadAccount(idToken, request.account.environment, undefined, undefined, request.account.homeAccountId);\r\n cacheRecord = new CacheRecord(\r\n cacheRecordAccount,\r\n this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId),\r\n this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId, options),\r\n this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment)\r\n );\r\n } else if (request.authority) {\r\n\r\n const authorityUrl = Authority.generateAuthority(request.authority, request.azureCloudOptions);\r\n const authorityOptions: AuthorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata,\r\n skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache,\r\n };\r\n authority = new Authority(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions, this.logger);\r\n\r\n // \"clientInfo\" from options takes precedence over \"clientInfo\" in response\r\n if (options.clientInfo) {\r\n this.logger.trace(\"TokenCache - homeAccountId from options\");\r\n const cacheRecordAccount = this.loadAccount(idToken, authority.hostnameAndPort, options.clientInfo, authority.authorityType);\r\n cacheRecord = new CacheRecord(\r\n cacheRecordAccount,\r\n this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant),\r\n this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options),\r\n this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort)\r\n );\r\n } else if (response.client_info) {\r\n this.logger.trace(\"TokenCache - homeAccountId from response\");\r\n const cacheRecordAccount = this.loadAccount(idToken, authority.hostnameAndPort, response.client_info, authority.authorityType);\r\n cacheRecord = new CacheRecord(\r\n cacheRecordAccount,\r\n this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant),\r\n this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options),\r\n this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort)\r\n );\r\n } else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide clientInfo in the response or options.\");\r\n }\r\n } else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide a request with an account or a request with authority.\");\r\n }\r\n\r\n return this.generateAuthenticationResult(request, idToken, cacheRecord, authority);\r\n }\r\n\r\n /**\r\n * Helper function to load account to msal-browser cache\r\n * @param idToken\r\n * @param environment\r\n * @param clientInfo\r\n * @param authorityType\r\n * @param requestHomeAccountId\r\n * @returns `AccountEntity`\r\n */\r\n private loadAccount(idToken: AuthToken, environment: string, clientInfo?: string, authorityType?: AuthorityType, requestHomeAccountId?: string): AccountEntity {\r\n\r\n let homeAccountId;\r\n if (requestHomeAccountId) {\r\n homeAccountId = requestHomeAccountId;\r\n } else if (authorityType !== undefined && clientInfo) {\r\n homeAccountId = AccountEntity.generateHomeAccountId(clientInfo, authorityType, this.logger, this.cryptoObj, idToken);\r\n }\r\n\r\n if (!homeAccountId) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Unexpected missing homeAccountId\");\r\n }\r\n\r\n const accountEntity = clientInfo ?\r\n AccountEntity.createAccount(clientInfo, homeAccountId, idToken, undefined, undefined, undefined, environment) :\r\n AccountEntity.createGenericAccount(homeAccountId, idToken, undefined, undefined, undefined, environment);\r\n\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading account\");\r\n\r\n this.storage.setAccount(accountEntity);\r\n return accountEntity;\r\n } else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n }\r\n\r\n /**\r\n * Helper function to load id tokens to msal-browser cache\r\n * @param idToken\r\n * @param homeAccountId\r\n * @param environment\r\n * @param tenantId\r\n * @returns `IdTokenEntity`\r\n */\r\n private loadIdToken(idToken: AuthToken, homeAccountId: string, environment: string, tenantId: string): IdTokenEntity {\r\n\r\n const idTokenEntity = IdTokenEntity.createIdTokenEntity(homeAccountId, environment, idToken.rawToken, this.config.auth.clientId, tenantId);\r\n\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading id token\");\r\n this.storage.setIdTokenCredential(idTokenEntity);\r\n return idTokenEntity;\r\n } else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n }\r\n\r\n /**\r\n * Helper function to load access tokens to msal-browser cache\r\n * @param request\r\n * @param response\r\n * @param homeAccountId\r\n * @param environment\r\n * @param tenantId\r\n * @returns `AccessTokenEntity`\r\n */\r\n private loadAccessToken(request: SilentRequest, response: ExternalTokenResponse, homeAccountId: string, environment: string, tenantId: string, options: LoadTokenOptions): AccessTokenEntity | null {\r\n\r\n if (!response.access_token) {\r\n this.logger.verbose(\"TokenCache - No access token provided for caching\");\r\n return null;\r\n }\r\n\r\n if (!response.expires_in) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes expires_in value.\");\r\n }\r\n\r\n if (!options.extendedExpiresOn) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide an extendedExpiresOn value in the options.\");\r\n }\r\n\r\n const scopes = new ScopeSet(request.scopes).printScopes();\r\n const expiresOn = options.expiresOn || (response.expires_in + new Date().getTime() / 1000);\r\n const extendedExpiresOn = options.extendedExpiresOn;\r\n\r\n const accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes, expiresOn, extendedExpiresOn, this.cryptoObj);\r\n\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading access token\");\r\n this.storage.setAccessTokenCredential(accessTokenEntity);\r\n return accessTokenEntity;\r\n } else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n }\r\n\r\n /**\r\n * Helper function to load refresh tokens to msal-browser cache\r\n * @param request\r\n * @param response\r\n * @param homeAccountId\r\n * @param environment\r\n * @returns `RefreshTokenEntity`\r\n */\r\n private loadRefreshToken(request: SilentRequest, response: ExternalTokenResponse, homeAccountId: string, environment: string): RefreshTokenEntity | null {\r\n\r\n if (!response.refresh_token) {\r\n this.logger.verbose(\"TokenCache - No refresh token provided for caching\");\r\n return null;\r\n }\r\n\r\n const refreshTokenEntity = RefreshTokenEntity.createRefreshTokenEntity(homeAccountId, environment, response.refresh_token, this.config.auth.clientId);\r\n\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading refresh token\");\r\n this.storage.setRefreshTokenCredential(refreshTokenEntity);\r\n return refreshTokenEntity;\r\n } else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n }\r\n\r\n /**\r\n * Helper function to generate an `AuthenticationResult` for the result.\r\n * @param request\r\n * @param idTokenObj\r\n * @param cacheRecord\r\n * @param authority\r\n * @returns `AuthenticationResult`\r\n */\r\n private generateAuthenticationResult(\r\n request: SilentRequest,\r\n idTokenObj: AuthToken,\r\n cacheRecord?: CacheRecord,\r\n authority?: Authority,\r\n ): AuthenticationResult {\r\n let accessToken: string = Constants.EMPTY_STRING;\r\n let responseScopes: Array<string> = [];\r\n let expiresOn: Date | null = null;\r\n let extExpiresOn: Date | undefined;\r\n\r\n if (cacheRecord?.accessToken) {\r\n accessToken = cacheRecord.accessToken.secret;\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\r\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\r\n }\r\n\r\n const uid = idTokenObj?.claims.oid || idTokenObj?.claims.sub || Constants.EMPTY_STRING;\r\n const tid = idTokenObj?.claims.tid || Constants.EMPTY_STRING;\r\n\r\n return {\r\n authority: authority ? authority.canonicalAuthority : Constants.EMPTY_STRING,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: cacheRecord?.account ? cacheRecord.account.getAccountInfo() : null,\r\n idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,\r\n idTokenClaims: idTokenObj ? idTokenObj.claims : {},\r\n accessToken: accessToken,\r\n fromCache: true,\r\n expiresOn: expiresOn,\r\n correlationId: request.correlationId || Constants.EMPTY_STRING,\r\n requestId: Constants.EMPTY_STRING,\r\n extExpiresOn: extExpiresOn,\r\n familyId: Constants.EMPTY_STRING,\r\n tokenType: cacheRecord?.accessToken?.tokenType || Constants.EMPTY_STRING,\r\n state: Constants.EMPTY_STRING,\r\n cloudGraphHostName: cacheRecord?.account?.cloudGraphHostName || Constants.EMPTY_STRING,\r\n msGraphHost: cacheRecord?.account?.msGraphHost || Constants.EMPTY_STRING,\r\n code: undefined,\r\n fromNativeBroker: false\r\n };\r\n }\r\n}\r\n\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthorizationCodeClient, ClientConfiguration } from \"@azure/msal-common\";\r\n\r\nexport class HybridSpaAuthorizationCodeClient extends AuthorizationCodeClient {\r\n constructor(config: ClientConfiguration) {\r\n super(config);\r\n this.includeRedirectUri = false;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, ICrypto, Logger, CommonAuthorizationCodeRequest, AuthError, Constants, IPerformanceClient, PerformanceEvents } from \"@azure/msal-common\";\r\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\r\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\r\nimport { BrowserConfiguration } from \"../config/Configuration\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { EventHandler } from \"../event/EventHandler\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { InteractionType, ApiId } from \"../utils/BrowserConstants\";\r\nimport { SilentHandler } from \"../interaction_handler/SilentHandler\";\r\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest\";\r\nimport { HybridSpaAuthorizationCodeClient } from \"./HybridSpaAuthorizationCodeClient\";\r\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\r\n\r\nexport class SilentAuthCodeClient extends StandardInteractionClient {\r\n private apiId: ApiId;\r\n\r\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\r\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\r\n this.apiId = apiId;\r\n }\r\n\r\n /**\r\n * Acquires a token silently by redeeming an authorization code against the /token endpoint\r\n * @param request\r\n */\r\n async acquireToken(request: AuthorizationCodeRequest): Promise<AuthenticationResult> {\r\n this.logger.trace(\"SilentAuthCodeClient.acquireToken called\");\r\n\r\n // Auth code payload is required\r\n if (!request.code) {\r\n throw BrowserAuthError.createAuthCodeRequiredError();\r\n\r\n }\r\n\r\n // Create silent request\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);\r\n const silentRequest: AuthorizationUrlRequest = await this.initializeAuthorizationRequest(request, InteractionType.Silent);\r\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\r\n\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\r\n\r\n try {\r\n\r\n // Create auth code request (PKCE not needed)\r\n const authCodeRequest: CommonAuthorizationCodeRequest = {\r\n ...silentRequest,\r\n code: request.code\r\n };\r\n\r\n // Initialize the client\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, request.correlationId);\r\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, silentRequest.authority);\r\n const authClient: HybridSpaAuthorizationCodeClient = new HybridSpaAuthorizationCodeClient(clientConfig);\r\n this.logger.verbose(\"Auth code client created\");\r\n\r\n // Create silent handler\r\n const silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system, this.performanceClient);\r\n\r\n // Handle auth code parameters from request\r\n return silentHandler.handleCodeResponseFromServer(\r\n {\r\n code: request.code,\r\n msgraph_host: request.msGraphHost,\r\n cloud_graph_host_name: request.cloudGraphHostName,\r\n cloud_instance_host_name: request.cloudInstanceHostName\r\n },\r\n silentRequest.state,\r\n authClient.authority,\r\n this.networkClient,\r\n false\r\n );\r\n } catch (e) {\r\n if (e instanceof AuthError) {\r\n (e as AuthError).setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByState(silentRequest.state);\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Currently Unsupported\r\n */\r\n logout(): Promise<void> {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { IPerformanceMeasurement, SubMeasurement } from \"@azure/msal-common\";\r\n\r\nexport class BrowserPerformanceMeasurement implements IPerformanceMeasurement {\r\n private readonly measureName: string;\r\n private readonly correlationId: string;\r\n private readonly startMark: string;\r\n private readonly endMark: string;\r\n\r\n constructor(name: string, correlationId: string) {\r\n this.correlationId = correlationId;\r\n this.measureName = BrowserPerformanceMeasurement.makeMeasureName(name, correlationId);\r\n this.startMark = BrowserPerformanceMeasurement.makeStartMark(name, correlationId);\r\n this.endMark = BrowserPerformanceMeasurement.makeEndMark(name, correlationId);\r\n }\r\n\r\n private static makeMeasureName(name: string, correlationId: string) {\r\n return `msal.measure.${name}.${correlationId}`;\r\n }\r\n\r\n private static makeStartMark(name: string, correlationId: string) {\r\n return `msal.start.${name}.${correlationId}`;\r\n }\r\n\r\n private static makeEndMark(name: string, correlationId: string) {\r\n return `msal.end.${name}.${correlationId}`;\r\n }\r\n\r\n static supportsBrowserPerformance(): boolean {\r\n return typeof window !== \"undefined\" &&\r\n typeof window.performance !== \"undefined\" &&\r\n typeof window.performance.mark === \"function\" &&\r\n typeof window.performance.measure === \"function\" &&\r\n typeof window.performance.clearMarks === \"function\" &&\r\n typeof window.performance.clearMeasures === \"function\" &&\r\n typeof window.performance.getEntriesByName === \"function\";\r\n }\r\n\r\n /**\r\n * Flush browser marks and measurements.\r\n * @param {string} correlationId\r\n * @param {SubMeasurement} measurements\r\n */\r\n public static flushMeasurements(correlationId: string, measurements: SubMeasurement[]): void {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n measurements.forEach((measurement) => {\r\n const measureName = BrowserPerformanceMeasurement.makeMeasureName(measurement.name, correlationId);\r\n const entriesForMeasurement = window.performance.getEntriesByName(measureName, \"measure\");\r\n if (entriesForMeasurement.length > 0) {\r\n window.performance.clearMeasures(measureName);\r\n window.performance.clearMarks(BrowserPerformanceMeasurement.makeStartMark(measureName, correlationId));\r\n window.performance.clearMarks(BrowserPerformanceMeasurement.makeEndMark(measureName, correlationId));\r\n }\r\n });\r\n } catch (e) {\r\n // Silently catch and return null\r\n }\r\n }\r\n }\r\n\r\n startMeasurement(): void {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n window.performance.mark(this.startMark);\r\n } catch (e) {\r\n // Silently catch\r\n }\r\n }\r\n }\r\n\r\n endMeasurement():void {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n window.performance.mark(this.endMark);\r\n window.performance.measure(this.measureName, this.startMark, this.endMark);\r\n } catch (e) {\r\n // Silently catch\r\n }\r\n }\r\n }\r\n\r\n flushMeasurement(): number | null {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n const entriesForMeasurement = window.performance.getEntriesByName(this.measureName, \"measure\");\r\n if (entriesForMeasurement.length > 0) {\r\n const durationMs = entriesForMeasurement[0].duration;\r\n window.performance.clearMeasures(this.measureName);\r\n window.performance.clearMarks(this.startMark);\r\n window.performance.clearMarks(this.endMark);\r\n return durationMs;\r\n }\r\n } catch (e) {\r\n // Silently catch and return null\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport {\r\n Logger,\r\n PerformanceEvent,\r\n PerformanceEvents,\r\n IPerformanceClient,\r\n PerformanceClient,\r\n IPerformanceMeasurement,\r\n InProgressPerformanceEvent,\r\n ApplicationTelemetry,\r\n SubMeasurement,\r\n PreQueueEvent\r\n} from \"@azure/msal-common\";\r\nimport { CryptoOptions } from \"../config/Configuration\";\r\nimport { BrowserCrypto } from \"../crypto/BrowserCrypto\";\r\nimport { GuidGenerator } from \"../crypto/GuidGenerator\";\r\nimport { BrowserPerformanceMeasurement } from \"./BrowserPerformanceMeasurement\";\r\n\r\nexport class BrowserPerformanceClient extends PerformanceClient implements IPerformanceClient {\r\n private browserCrypto: BrowserCrypto;\r\n private guidGenerator: GuidGenerator;\r\n\r\n constructor(clientId: string, authority: string, logger: Logger, libraryName: string, libraryVersion: string, applicationTelemetry: ApplicationTelemetry, cryptoOptions: CryptoOptions) {\r\n super(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry);\r\n this.browserCrypto = new BrowserCrypto(this.logger, cryptoOptions);\r\n this.guidGenerator = new GuidGenerator(this.browserCrypto);\r\n }\r\n\r\n startPerformanceMeasuremeant(measureName: string, correlationId: string): IPerformanceMeasurement {\r\n return new BrowserPerformanceMeasurement(measureName, correlationId);\r\n }\r\n\r\n generateId() : string {\r\n return this.guidGenerator.generateGuid();\r\n }\r\n\r\n private getPageVisibility(): string | null {\r\n return document.visibilityState?.toString() || null;\r\n }\r\n\r\n private deleteIncompleteSubMeasurements(inProgressEvent: InProgressPerformanceEvent): void {\r\n const rootEvent = this.eventsByCorrelationId.get(inProgressEvent.event.correlationId);\r\n const isRootEvent = rootEvent && rootEvent.eventId === inProgressEvent.event.eventId;\r\n const incompleteMeasurements: SubMeasurement[] = [];\r\n if (isRootEvent && rootEvent?.incompleteSubMeasurements) {\r\n rootEvent.incompleteSubMeasurements.forEach((subMeasurement) => {\r\n incompleteMeasurements.push({...subMeasurement});\r\n });\r\n }\r\n // Clean up remaining marks for incomplete sub-measurements\r\n if (incompleteMeasurements.length > 0) {\r\n BrowserPerformanceMeasurement.flushMeasurements(inProgressEvent.event.correlationId, incompleteMeasurements);\r\n }\r\n }\r\n\r\n supportsBrowserPerformanceNow(): boolean {\r\n return typeof window !== \"undefined\" &&\r\n typeof window.performance !== \"undefined\" &&\r\n typeof window.performance.now === \"function\";\r\n }\r\n\r\n /**\r\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\r\n * Also captures browser page visibilityState.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {?string} [correlationId]\r\n * @returns {((event?: Partial<PerformanceEvent>) => PerformanceEvent| null)}\r\n */\r\n startMeasurement(measureName: PerformanceEvents, correlationId?: string): InProgressPerformanceEvent {\r\n // Capture page visibilityState and then invoke start/end measurement\r\n const startPageVisibility = this.getPageVisibility();\r\n\r\n const inProgressEvent = super.startMeasurement(measureName, correlationId);\r\n\r\n return {\r\n ...inProgressEvent,\r\n endMeasurement: (event?: Partial<PerformanceEvent>): PerformanceEvent | null => {\r\n const res = inProgressEvent.endMeasurement({\r\n startPageVisibility,\r\n endPageVisibility: this.getPageVisibility(),\r\n ...event\r\n });\r\n this.deleteIncompleteSubMeasurements(inProgressEvent);\r\n\r\n return res;\r\n },\r\n discardMeasurement: () => {\r\n inProgressEvent.discardMeasurement();\r\n this.deleteIncompleteSubMeasurements(inProgressEvent);\r\n inProgressEvent.measurement.flushMeasurement();\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Adds pre-queue time to preQueueTimeByCorrelationId map.\r\n * @param {PerformanceEvents} eventName\r\n * @param {?string} correlationId\r\n * @returns\r\n */\r\n setPreQueueTime(eventName: PerformanceEvents, correlationId?: string): void {\r\n if (!this.supportsBrowserPerformanceNow()) {\r\n this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to set telemetry queue time for ${eventName}`);\r\n return;\r\n }\r\n\r\n if (!correlationId) {\r\n this.logger.trace(`BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to set telemetry queue time`);\r\n return;\r\n }\r\n\r\n const preQueueEvent: PreQueueEvent | undefined = this.preQueueTimeByCorrelationId.get(correlationId);\r\n /**\r\n * Manually complete queue measurement if there is an incomplete pre-queue event.\r\n * Incomplete pre-queue events are instrumentation bugs that should be fixed.\r\n */\r\n if (preQueueEvent) {\r\n this.logger.trace(`BrowserPerformanceClient: Incomplete pre-queue ${preQueueEvent.name} found`, correlationId);\r\n this.addQueueMeasurement(preQueueEvent.name, correlationId, undefined, true);\r\n }\r\n this.preQueueTimeByCorrelationId.set(correlationId, { name: eventName, time: window.performance.now() });\r\n }\r\n\r\n /**\r\n * Calculates and adds queue time measurement for given performance event.\r\n *\r\n * @param {PerformanceEvents} eventName\r\n * @param {?string} correlationId\r\n * @param {?number} queueTime\r\n * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements\r\n * @returns\r\n */\r\n addQueueMeasurement(eventName: PerformanceEvents, correlationId?: string, queueTime?: number, manuallyCompleted?: boolean): void {\r\n if (!this.supportsBrowserPerformanceNow()) {\r\n this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to add queue measurement for ${eventName}`);\r\n return;\r\n }\r\n\r\n if (!correlationId) {\r\n this.logger.trace(`BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to add queue measurement`);\r\n return;\r\n }\r\n\r\n const preQueueTime = super.getPreQueueTime(eventName, correlationId);\r\n if (!preQueueTime) {\r\n return;\r\n }\r\n\r\n const currentTime = window.performance.now();\r\n const resQueueTime = queueTime || super.calculateQueuedTime(preQueueTime, currentTime);\r\n\r\n return super.addQueueMeasurement(eventName, correlationId, resQueueTime, manuallyCompleted);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AccountInfo, AuthenticationResult, Constants, RequestThumbprint, AuthError, PerformanceEvents, ServerError, InteractionRequiredAuthError, InProgressPerformanceEvent, InteractionRequiredAuthErrorMessage } from \"@azure/msal-common\";\r\nimport { Configuration } from \"../config/Configuration\";\r\nimport { DEFAULT_REQUEST, InteractionType, ApiId, CacheLookupPolicy, BrowserConstants } from \"../utils/BrowserConstants\";\r\nimport { IPublicClientApplication } from \"./IPublicClientApplication\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { ClientApplication } from \"./ClientApplication\";\r\nimport { SilentRequest } from \"../request/SilentRequest\";\r\nimport { EventType } from \"../event/EventType\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { NativeAuthError } from \"../error/NativeAuthError\";\r\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\n\r\n/**\r\n * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications\r\n * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification.\r\n */\r\nexport class PublicClientApplication extends ClientApplication implements IPublicClientApplication {\r\n\r\n // Active requests\r\n private activeSilentTokenRequests: Map<string, Promise<AuthenticationResult>>;\r\n private astsAsyncMeasurement?: InProgressPerformanceEvent = undefined;\r\n\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration object for the MSAL PublicClientApplication instance\r\n */\r\n constructor(configuration: Configuration) {\r\n super(configuration);\r\n\r\n this.activeSilentTokenRequests = new Map();\r\n // Register listener functions\r\n this.trackPageVisibility = this.trackPageVisibility.bind(this);\r\n }\r\n\r\n /**\r\n * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so\r\n * any code that follows this function will not execute.\r\n *\r\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n async loginRedirect(request?: RedirectRequest): Promise<void> {\r\n const correlationId: string = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"loginRedirect called\", correlationId);\r\n return this.acquireTokenRedirect({\r\n correlationId,\r\n ...(request || DEFAULT_REQUEST)\r\n });\r\n }\r\n\r\n /**\r\n * Use when initiating the login process via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n loginPopup(request?: PopupRequest): Promise<AuthenticationResult> {\r\n const correlationId: string = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"loginPopup called\", correlationId);\r\n return this.acquireTokenPopup({\r\n correlationId,\r\n ...(request || DEFAULT_REQUEST)\r\n });\r\n }\r\n\r\n /**\r\n * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made.\r\n *\r\n * @param {@link (SilentRequest:type)}\r\n * @returns {Promise.<AuthenticationResult>} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object\r\n */\r\n async acquireTokenSilent(request: SilentRequest): Promise<AuthenticationResult> {\r\n const correlationId = this.getRequestCorrelationId(request);\r\n const atsMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilent, correlationId);\r\n atsMeasurement.addStaticFields({\r\n cacheLookupPolicy: request.cacheLookupPolicy\r\n });\r\n\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.verbose(\"acquireTokenSilent called\", correlationId);\r\n\r\n const account = request.account || this.getActiveAccount();\r\n if (!account) {\r\n throw BrowserAuthError.createNoAccountError();\r\n }\r\n\r\n const thumbprint: RequestThumbprint = {\r\n clientId: this.config.auth.clientId,\r\n authority: request.authority || Constants.EMPTY_STRING,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: account.homeAccountId,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n const silentRequestKey = JSON.stringify(thumbprint);\r\n\r\n const cachedResponse = this.activeSilentTokenRequests.get(silentRequestKey);\r\n if (typeof cachedResponse === \"undefined\") {\r\n this.logger.verbose(\"acquireTokenSilent called for the first time, storing active request\", correlationId);\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.AcquireTokenSilentAsync, correlationId);\r\n const response = this.acquireTokenSilentAsync({\r\n ...request,\r\n correlationId\r\n }, account)\r\n .then((result) => {\r\n this.activeSilentTokenRequests.delete(silentRequestKey);\r\n atsMeasurement.addStaticFields({\r\n accessTokenSize: result.accessToken.length,\r\n idTokenSize: result.idToken.length\r\n });\r\n atsMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: result.fromCache,\r\n isNativeBroker: result.fromNativeBroker,\r\n cacheLookupPolicy: request.cacheLookupPolicy,\r\n requestId: result.requestId,\r\n });\r\n return result;\r\n })\r\n .catch((error: AuthError) => {\r\n this.activeSilentTokenRequests.delete(silentRequestKey);\r\n atsMeasurement.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n throw error;\r\n });\r\n this.activeSilentTokenRequests.set(silentRequestKey, response);\r\n return response;\r\n } else {\r\n this.logger.verbose(\"acquireTokenSilent has been called previously, returning the result from the first call\", correlationId);\r\n // Discard measurements for memoized calls, as they are usually only a couple of ms and will artificially deflate metrics\r\n atsMeasurement.discardMeasurement();\r\n return cachedResponse;\r\n }\r\n }\r\n\r\n private trackPageVisibility():void {\r\n if (!this.astsAsyncMeasurement) {\r\n return;\r\n }\r\n this.logger.info(\"Perf: Visibility change detected\");\r\n this.astsAsyncMeasurement.increment({\r\n visibilityChangeCount: 1,\r\n });\r\n }\r\n\r\n /**\r\n * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token.\r\n * @param {@link (SilentRequest:type)}\r\n * @param {@link (AccountInfo:type)}\r\n * @returns {Promise.<AuthenticationResult>} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse}\r\n */\r\n protected async acquireTokenSilentAsync(request: SilentRequest, account: AccountInfo): Promise<AuthenticationResult>{\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenSilentAsync, request.correlationId);\r\n\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, request);\r\n this.astsAsyncMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilentAsync, request.correlationId);\r\n this.astsAsyncMeasurement?.increment({\r\n visibilityChangeCount: 0\r\n });\r\n document.addEventListener(\"visibilitychange\",this.trackPageVisibility);\r\n let result: Promise<AuthenticationResult>;\r\n if (NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme) && account.nativeAccountId) {\r\n this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from native platform\");\r\n const silentRequest: SilentRequest = {\r\n ...request,\r\n account\r\n };\r\n result = this.acquireTokenNative(silentRequest, ApiId.acquireTokenSilent_silentFlow).catch(async (e: AuthError) => {\r\n // If native token acquisition fails for availability reasons fallback to web flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n this.logger.verbose(\"acquireTokenSilent - native platform unavailable, falling back to web flow\");\r\n this.nativeExtensionProvider = undefined; // Prevent future requests from continuing to attempt\r\n\r\n // Cache will not contain tokens, given that previous WAM requests succeeded. Skip cache and RT renewal and go straight to iframe renewal\r\n const silentIframeClient = this.createSilentIframeClient(request.correlationId);\r\n return silentIframeClient.acquireToken(request);\r\n }\r\n throw e;\r\n });\r\n } else {\r\n this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from web flow\");\r\n\r\n const silentCacheClient = this.createSilentCacheClient(request.correlationId);\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeSilentRequest, request.correlationId);\r\n const silentRequest = await silentCacheClient.initializeSilentRequest(request, account);\r\n\r\n const requestWithCLP = {\r\n ...request,\r\n // set the request's CacheLookupPolicy to Default if it was not optionally passed in\r\n cacheLookupPolicy: request.cacheLookupPolicy || CacheLookupPolicy.Default\r\n };\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.AcquireTokenFromCache, silentRequest.correlationId);\r\n result = this.acquireTokenFromCache(silentCacheClient, silentRequest, requestWithCLP).catch((cacheError: AuthError) => {\r\n if (requestWithCLP.cacheLookupPolicy === CacheLookupPolicy.AccessToken) {\r\n throw cacheError;\r\n }\r\n\r\n // block the reload if it occurred inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_NETWORK_START, InteractionType.Silent, silentRequest);\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.AcquireTokenByRefreshToken, silentRequest.correlationId);\r\n return this.acquireTokenByRefreshToken(silentRequest, requestWithCLP).catch((refreshTokenError: AuthError) => {\r\n const isServerError = refreshTokenError instanceof ServerError;\r\n const isInteractionRequiredError = refreshTokenError instanceof InteractionRequiredAuthError;\r\n const rtNotFound = (refreshTokenError.errorCode === InteractionRequiredAuthErrorMessage.noTokensFoundError.code);\r\n const isInvalidGrantError = (refreshTokenError.errorCode === BrowserConstants.INVALID_GRANT_ERROR);\r\n\r\n if ((!isServerError ||\r\n !isInvalidGrantError ||\r\n isInteractionRequiredError ||\r\n requestWithCLP.cacheLookupPolicy === CacheLookupPolicy.AccessTokenAndRefreshToken ||\r\n requestWithCLP.cacheLookupPolicy === CacheLookupPolicy.RefreshToken)\r\n && (requestWithCLP.cacheLookupPolicy !== CacheLookupPolicy.Skip)\r\n && !rtNotFound\r\n ) {\r\n throw refreshTokenError;\r\n }\r\n\r\n this.logger.verbose(\"Refresh token expired/invalid or CacheLookupPolicy is set to Skip, attempting acquire token by iframe.\", request.correlationId);\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.AcquireTokenBySilentIframe, silentRequest.correlationId);\r\n return this.acquireTokenBySilentIframe(silentRequest);\r\n });\r\n });\r\n }\r\n\r\n return result.then((response) => {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, response);\r\n this.astsAsyncMeasurement?.endMeasurement({\r\n success: true,\r\n fromCache: response.fromCache,\r\n isNativeBroker: response.fromNativeBroker,\r\n requestId: response.requestId\r\n });\r\n return response;\r\n }).catch((tokenRenewalError: AuthError) => {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null, tokenRenewalError);\r\n this.astsAsyncMeasurement?.endMeasurement({\r\n errorCode: tokenRenewalError.errorCode,\r\n subErrorCode: tokenRenewalError.subError,\r\n success: false\r\n });\r\n throw tokenRenewalError;\r\n }).finally(() => {\r\n document.removeEventListener(\"visibilitychange\",this.trackPageVisibility);\r\n });\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CryptoOps } from \"../crypto/CryptoOps\";\r\nimport { InteractionRequiredAuthError, AccountInfo, Constants, INetworkModule, AuthenticationResult, Logger, CommonSilentFlowRequest, ICrypto, DEFAULT_CRYPTO_IMPLEMENTATION, AuthError, PerformanceEvents, PerformanceCallbackFunction, StubPerformanceClient, IPerformanceClient, BaseAuthRequest, PromptValue, ClientAuthError, InProgressPerformanceEvent } from \"@azure/msal-common\";\r\nimport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER } from \"../cache/BrowserCacheManager\";\r\nimport { BrowserConfiguration, buildConfiguration, CacheOptions, Configuration } from \"../config/Configuration\";\r\nimport { InteractionType, ApiId, BrowserCacheLocation, WrapperSKU, TemporaryCacheKeys, CacheLookupPolicy } from \"../utils/BrowserConstants\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\r\nimport { version, name } from \"../packageMetadata\";\r\nimport { EventCallbackFunction } from \"../event/EventMessage\";\r\nimport { EventType } from \"../event/EventType\";\r\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\r\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\r\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { EventHandler } from \"../event/EventHandler\";\r\nimport { PopupClient } from \"../interaction_client/PopupClient\";\r\nimport { RedirectClient } from \"../interaction_client/RedirectClient\";\r\nimport { SilentIframeClient } from \"../interaction_client/SilentIframeClient\";\r\nimport { SilentRefreshClient } from \"../interaction_client/SilentRefreshClient\";\r\nimport { TokenCache } from \"../cache/TokenCache\";\r\nimport { ITokenCache } from \"../cache/ITokenCache\";\r\nimport { NativeInteractionClient } from \"../interaction_client/NativeInteractionClient\";\r\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\r\nimport { SilentRequest } from \"../request/SilentRequest\";\r\nimport { NativeAuthError } from \"../error/NativeAuthError\";\r\nimport { SilentCacheClient } from \"../interaction_client/SilentCacheClient\";\r\nimport { SilentAuthCodeClient } from \"../interaction_client/SilentAuthCodeClient\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest\";\r\nimport { NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest\";\r\nimport { BrowserPerformanceClient } from \"../telemetry/BrowserPerformanceClient\";\r\n\r\nexport abstract class ClientApplication {\r\n\r\n // Crypto interface implementation\r\n protected readonly browserCrypto: ICrypto;\r\n\r\n // Storage interface implementation\r\n protected readonly browserStorage: BrowserCacheManager;\r\n\r\n // Native Cache in memory storage implementation\r\n protected readonly nativeInternalStorage: BrowserCacheManager;\r\n\r\n // Network interface implementation\r\n protected readonly networkClient: INetworkModule;\r\n\r\n // Navigation interface implementation\r\n protected navigationClient: INavigationClient;\r\n\r\n // Input configuration by developer/user\r\n protected config: BrowserConfiguration;\r\n\r\n // Token cache implementation\r\n private tokenCache: TokenCache;\r\n\r\n // Logger\r\n protected logger: Logger;\r\n\r\n // Flag to indicate if in browser environment\r\n protected isBrowserEnvironment: boolean;\r\n\r\n protected eventHandler: EventHandler;\r\n\r\n // Redirect Response Object\r\n protected redirectResponse: Map<string, Promise<AuthenticationResult | null>>;\r\n\r\n // Native Extension Provider\r\n protected nativeExtensionProvider: NativeMessageHandler | undefined;\r\n\r\n // Hybrid auth code responses\r\n private hybridAuthCodeResponses: Map<string, Promise<AuthenticationResult>>;\r\n\r\n // Performance telemetry client\r\n protected performanceClient: IPerformanceClient;\r\n\r\n // Flag representing whether or not the initialize API has been called and completed\r\n protected initialized: boolean;\r\n\r\n private ssoSilentMeasurement?: InProgressPerformanceEvent;\r\n private acquireTokenByCodeAsyncMeasurement?: InProgressPerformanceEvent;\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration Object for the MSAL PublicClientApplication instance\r\n */\r\n constructor(configuration: Configuration) {\r\n /*\r\n * If loaded in an environment where window is not available,\r\n * set internal flag to false so that further requests fail.\r\n * This is to support server-side rendering environments.\r\n */\r\n this.isBrowserEnvironment = typeof window !== \"undefined\";\r\n // Set the configuration.\r\n this.config = buildConfiguration(configuration, this.isBrowserEnvironment);\r\n this.initialized = false;\r\n\r\n // Initialize logger\r\n this.logger = new Logger(this.config.system.loggerOptions, name, version);\r\n\r\n // Initialize the network module class.\r\n this.networkClient = this.config.system.networkClient;\r\n\r\n // Initialize the navigation client class.\r\n this.navigationClient = this.config.system.navigationClient;\r\n\r\n // Initialize redirectResponse Map\r\n this.redirectResponse = new Map();\r\n\r\n // Initial hybrid spa map\r\n this.hybridAuthCodeResponses = new Map();\r\n\r\n // Initialize performance client\r\n this.performanceClient = this.isBrowserEnvironment ?\r\n new BrowserPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application, this.config.system.cryptoOptions) :\r\n new StubPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application);\r\n\r\n // Initialize the crypto class.\r\n this.browserCrypto = this.isBrowserEnvironment ? new CryptoOps(this.logger, this.performanceClient, this.config.system.cryptoOptions) : DEFAULT_CRYPTO_IMPLEMENTATION;\r\n\r\n this.eventHandler = new EventHandler(this.logger, this.browserCrypto);\r\n\r\n // Initialize the browser storage class.\r\n this.browserStorage = this.isBrowserEnvironment ?\r\n new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger) :\r\n DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger);\r\n\r\n // initialize in memory storage for native flows\r\n const nativeCacheOptions: Required<CacheOptions> = {\r\n cacheLocation: BrowserCacheLocation.MemoryStorage,\r\n temporaryCacheLocation: BrowserCacheLocation.MemoryStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false,\r\n cacheMigrationEnabled: false,\r\n claimsBasedCachingEnabled: true\r\n };\r\n this.nativeInternalStorage = new BrowserCacheManager(this.config.auth.clientId, nativeCacheOptions, this.browserCrypto, this.logger);\r\n\r\n // Initialize the token cache\r\n this.tokenCache = new TokenCache(this.config, this.browserStorage, this.logger, this.browserCrypto);\r\n // Register listener functions\r\n this.trackPageVisibilityWithMeasurement = this.trackPageVisibilityWithMeasurement.bind(this);\r\n }\r\n\r\n /**\r\n * Initializer function to perform async startup tasks such as connecting to WAM extension\r\n */\r\n async initialize(): Promise<void> {\r\n this.logger.trace(\"initialize called\");\r\n if (this.initialized) {\r\n this.logger.info(\"initialize has already been called, exiting early.\");\r\n return;\r\n }\r\n\r\n const allowNativeBroker = this.config.system.allowNativeBroker;\r\n const initMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.InitializeClientApplication);\r\n this.eventHandler.emitEvent(EventType.INITIALIZE_START);\r\n\r\n if (allowNativeBroker) {\r\n try {\r\n this.nativeExtensionProvider = await NativeMessageHandler.createProvider(this.logger, this.config.system.nativeBrokerHandshakeTimeout, this.performanceClient);\r\n } catch (e) {\r\n this.logger.verbose(e);\r\n }\r\n }\r\n\r\n if(!this.config.cache.claimsBasedCachingEnabled) {\r\n this.logger.verbose(\"Claims-based caching is disabled. Clearing the previous cache with claims\");\r\n const claimsTokensRemovalMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.ClearTokensAndKeysWithClaims);\r\n await this.browserStorage.clearTokensAndKeysWithClaims();\r\n claimsTokensRemovalMeasurement.endMeasurement({success: true});\r\n }\r\n\r\n this.initialized = true;\r\n this.eventHandler.emitEvent(EventType.INITIALIZE_END);\r\n\r\n initMeasurement.endMeasurement({allowNativeBroker, success: true});\r\n }\r\n\r\n // #region Redirect Flow\r\n\r\n /**\r\n * Event handler function which allows users to fire events after the PublicClientApplication object\r\n * has loaded during redirect flows. This should be invoked on all page loads involved in redirect\r\n * auth flows.\r\n * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value.\r\n * @returns Token response or null. If the return value is null, then no auth redirect was detected.\r\n */\r\n async handleRedirectPromise(hash?: string): Promise<AuthenticationResult | null> {\r\n this.logger.verbose(\"handleRedirectPromise called\");\r\n // Block token acquisition before initialize has been called if native brokering is enabled\r\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\r\n\r\n const loggedInAccounts = this.getAllAccounts();\r\n if (this.isBrowserEnvironment) {\r\n /**\r\n * Store the promise on the PublicClientApplication instance if this is the first invocation of handleRedirectPromise,\r\n * otherwise return the promise from the first invocation. Prevents race conditions when handleRedirectPromise is called\r\n * several times concurrently.\r\n */\r\n const redirectResponseKey = hash || Constants.EMPTY_STRING;\r\n let response = this.redirectResponse.get(redirectResponseKey);\r\n if (typeof response === \"undefined\") {\r\n this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_START, InteractionType.Redirect);\r\n this.logger.verbose(\"handleRedirectPromise has been called for the first time, storing the promise\");\r\n\r\n const request: NativeTokenRequest | null = this.browserStorage.getCachedNativeRequest();\r\n let redirectResponse: Promise<AuthenticationResult | null>;\r\n if (request && NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider) && this.nativeExtensionProvider && !hash) {\r\n this.logger.trace(\"handleRedirectPromise - acquiring token from native platform\");\r\n const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.handleRedirectPromise, this.performanceClient, this.nativeExtensionProvider, request.accountId, this.nativeInternalStorage, request.correlationId);\r\n redirectResponse = nativeClient.handleRedirectPromise();\r\n } else {\r\n this.logger.trace(\"handleRedirectPromise - acquiring token from web flow\");\r\n const correlationId = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, true) || Constants.EMPTY_STRING;\r\n const redirectClient = this.createRedirectClient(correlationId);\r\n redirectResponse = redirectClient.handleRedirectPromise(hash);\r\n }\r\n\r\n response = redirectResponse.then((result: AuthenticationResult | null) => {\r\n if (result) {\r\n // Emit login event if number of accounts change\r\n\r\n const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Redirect, result);\r\n this.logger.verbose(\"handleRedirectResponse returned result, login success\");\r\n } else {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Redirect, result);\r\n this.logger.verbose(\"handleRedirectResponse returned result, acquire token success\");\r\n }\r\n }\r\n this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n\r\n return result;\r\n }).catch((e) => {\r\n // Emit login event if there is an account\r\n if (loggedInAccounts.length > 0) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n } else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n\r\n throw e;\r\n });\r\n this.redirectResponse.set(redirectResponseKey, response);\r\n } else {\r\n this.logger.verbose(\"handleRedirectPromise has been called previously, returning the result from the first call\");\r\n }\r\n\r\n return response;\r\n }\r\n this.logger.verbose(\"handleRedirectPromise returns null, not browser environment\");\r\n return null;\r\n }\r\n\r\n /**\r\n * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects\r\n * the page, so any code that follows this function will not execute.\r\n *\r\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n async acquireTokenRedirect(request: RedirectRequest): Promise<void> {\r\n // Preflight request\r\n const correlationId = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"acquireTokenRedirect called\", correlationId);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n\r\n // If logged in, emit acquire token events\r\n const isLoggedIn = this.getAllAccounts().length > 0;\r\n if (isLoggedIn) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Redirect, request);\r\n } else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Redirect, request);\r\n }\r\n\r\n let result: Promise<void>;\r\n\r\n if (this.nativeExtensionProvider && this.canUseNative(request)) {\r\n const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenRedirect, this.performanceClient, this.nativeExtensionProvider, this.getNativeAccountId(request), this.nativeInternalStorage, request.correlationId);\r\n result = nativeClient.acquireTokenRedirect(request).catch((e: AuthError) => {\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n const redirectClient = this.createRedirectClient(request.correlationId);\r\n return redirectClient.acquireToken(request);\r\n } else if (e instanceof InteractionRequiredAuthError) {\r\n this.logger.verbose(\"acquireTokenRedirect - Resolving interaction required error thrown by native broker by falling back to web flow\");\r\n const redirectClient = this.createRedirectClient(request.correlationId);\r\n return redirectClient.acquireToken(request);\r\n }\r\n this.browserStorage.setInteractionInProgress(false);\r\n throw e;\r\n });\r\n } else {\r\n const redirectClient = this.createRedirectClient(request.correlationId);\r\n result = redirectClient.acquireToken(request);\r\n }\r\n\r\n return result.catch((e) => {\r\n // If logged in, emit acquire token events\r\n if (isLoggedIn) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n } else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n throw e;\r\n });\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Popup Flow\r\n\r\n /**\r\n * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n acquireTokenPopup(request: PopupRequest): Promise<AuthenticationResult> {\r\n const correlationId = this.getRequestCorrelationId(request);\r\n const atPopupMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPopup, correlationId);\r\n\r\n try {\r\n this.logger.verbose(\"acquireTokenPopup called\", correlationId);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n } catch (e) {\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n\r\n // If logged in, emit acquire token events\r\n const loggedInAccounts = this.getAllAccounts();\r\n if (loggedInAccounts.length > 0) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Popup, request);\r\n } else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Popup, request);\r\n }\r\n\r\n let result: Promise<AuthenticationResult>;\r\n\r\n if (this.canUseNative(request)) {\r\n result = this.acquireTokenNative(request, ApiId.acquireTokenPopup).then((response) => {\r\n this.browserStorage.setInteractionInProgress(false);\r\n atPopupMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true,\r\n requestId: response.requestId\r\n });\r\n return response;\r\n }).catch((e: AuthError) => {\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n const popupClient = this.createPopupClient(request.correlationId);\r\n return popupClient.acquireToken(request);\r\n } else if (e instanceof InteractionRequiredAuthError) {\r\n this.logger.verbose(\"acquireTokenPopup - Resolving interaction required error thrown by native broker by falling back to web flow\");\r\n const popupClient = this.createPopupClient(request.correlationId);\r\n return popupClient.acquireToken(request);\r\n }\r\n this.browserStorage.setInteractionInProgress(false);\r\n throw e;\r\n });\r\n } else {\r\n const popupClient = this.createPopupClient(request.correlationId);\r\n result = popupClient.acquireToken(request);\r\n }\r\n\r\n return result.then((result) => {\r\n\r\n /*\r\n * If logged in, emit acquire token events\r\n */\r\n const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Popup, result);\r\n } else {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Popup, result);\r\n }\r\n\r\n atPopupMeasurement.addStaticFields({\r\n accessTokenSize: result.accessToken.length,\r\n idTokenSize: result.idToken.length\r\n });\r\n atPopupMeasurement.endMeasurement({\r\n success: true,\r\n requestId: result.requestId\r\n });\r\n return result;\r\n }).catch((e: AuthError) => {\r\n if (loggedInAccounts.length > 0) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Popup, null, e);\r\n } else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Popup, null, e);\r\n }\r\n\r\n atPopupMeasurement.endMeasurement({\r\n errorCode: e.errorCode,\r\n subErrorCode: e.subError,\r\n success: false\r\n });\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n });\r\n }\r\n\r\n private trackPageVisibilityWithMeasurement():void {\r\n const measurement = this.ssoSilentMeasurement || this.acquireTokenByCodeAsyncMeasurement;\r\n if(!measurement) {\r\n return;\r\n }\r\n\r\n this.logger.info(\"Perf: Visibility change detected in \", measurement.event.name);\r\n measurement.increment({\r\n visibilityChangeCount: 1,\r\n });\r\n }\r\n // #endregion\r\n\r\n // #region Silent Flow\r\n\r\n /**\r\n * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work:\r\n * - Any browser using a form of Intelligent Tracking Prevention\r\n * - If there is not an established session with the service\r\n *\r\n * In these cases, the request must be done inside a popup or full frame redirect.\r\n *\r\n * For the cases where interaction is required, you cannot send a request with prompt=none.\r\n *\r\n * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as\r\n * you session on the server still exists.\r\n * @param request {@link SsoSilentRequest}\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n async ssoSilent(request: SsoSilentRequest): Promise<AuthenticationResult> {\r\n const correlationId = this.getRequestCorrelationId(request);\r\n const validRequest = {\r\n ...request,\r\n // will be PromptValue.NONE or PromptValue.NO_SESSION\r\n prompt: request.prompt,\r\n correlationId: correlationId\r\n };\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.ssoSilentMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SsoSilent, correlationId);\r\n this.ssoSilentMeasurement?.increment({\r\n visibilityChangeCount: 0\r\n });\r\n document.addEventListener(\"visibilitychange\",this.trackPageVisibilityWithMeasurement);\r\n this.logger.verbose(\"ssoSilent called\", correlationId);\r\n this.eventHandler.emitEvent(EventType.SSO_SILENT_START, InteractionType.Silent, validRequest);\r\n\r\n let result: Promise<AuthenticationResult>;\r\n\r\n if (this.canUseNative(validRequest)) {\r\n result = this.acquireTokenNative(validRequest, ApiId.ssoSilent).catch((e: AuthError) => {\r\n // If native token acquisition fails for availability reasons fallback to standard flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n const silentIframeClient = this.createSilentIframeClient(validRequest.correlationId);\r\n return silentIframeClient.acquireToken(validRequest);\r\n }\r\n throw e;\r\n });\r\n } else {\r\n const silentIframeClient = this.createSilentIframeClient(validRequest.correlationId);\r\n result = silentIframeClient.acquireToken(validRequest);\r\n }\r\n\r\n return result.then((response) => {\r\n this.eventHandler.emitEvent(EventType.SSO_SILENT_SUCCESS, InteractionType.Silent, response);\r\n this.ssoSilentMeasurement?.addStaticFields({\r\n accessTokenSize: response.accessToken.length,\r\n idTokenSize: response.idToken.length\r\n });\r\n this.ssoSilentMeasurement?.endMeasurement({\r\n success: true,\r\n isNativeBroker: response.fromNativeBroker,\r\n requestId: response.requestId\r\n });\r\n return response;\r\n }).catch((e: AuthError) => {\r\n this.eventHandler.emitEvent(EventType.SSO_SILENT_FAILURE, InteractionType.Silent, null, e);\r\n this.ssoSilentMeasurement?.endMeasurement({\r\n errorCode: e.errorCode,\r\n subErrorCode: e.subError,\r\n success: false\r\n });\r\n throw e;\r\n }).finally(() => {\r\n document.removeEventListener(\"visibilitychange\",this.trackPageVisibilityWithMeasurement);\r\n });\r\n\r\n }\r\n\r\n /**\r\n * This function redeems an authorization code (passed as code) from the eSTS token endpoint.\r\n * This authorization code should be acquired server-side using a confidential client to acquire a spa_code.\r\n * This API is not indended for normal authorization code acquisition and redemption.\r\n *\r\n * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client.\r\n *\r\n * @param request {@link AuthorizationCodeRequest}\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n async acquireTokenByCode(request: AuthorizationCodeRequest): Promise<AuthenticationResult> {\r\n const correlationId = this.getRequestCorrelationId(request);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.trace(\"acquireTokenByCode called\", correlationId);\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_START, InteractionType.Silent, request);\r\n const atbcMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCode, request.correlationId);\r\n\r\n try {\r\n if (request.code && request.nativeAccountId) {\r\n // Throw error in case server returns both spa_code and spa_accountid in exchange for auth code.\r\n throw BrowserAuthError.createSpaCodeAndNativeAccountIdPresentError();\r\n }\r\n else if (request.code) {\r\n const hybridAuthCode = request.code;\r\n let response = this.hybridAuthCodeResponses.get(hybridAuthCode);\r\n if (!response) {\r\n this.logger.verbose(\"Initiating new acquireTokenByCode request\", correlationId);\r\n response = this.acquireTokenByCodeAsync({\r\n ...request,\r\n correlationId\r\n })\r\n .then((result: AuthenticationResult) => {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_SUCCESS, InteractionType.Silent, result);\r\n this.hybridAuthCodeResponses.delete(hybridAuthCode);\r\n atbcMeasurement.addStaticFields({\r\n accessTokenSize: result.accessToken.length,\r\n idTokenSize: result.idToken.length\r\n });\r\n atbcMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: result.fromNativeBroker,\r\n requestId: result.requestId\r\n });\r\n return result;\r\n })\r\n .catch((error: AuthError) => {\r\n this.hybridAuthCodeResponses.delete(hybridAuthCode);\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, error);\r\n atbcMeasurement.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n throw error;\r\n });\r\n this.hybridAuthCodeResponses.set(hybridAuthCode, response);\r\n } else {\r\n this.logger.verbose(\"Existing acquireTokenByCode request found\", request.correlationId);\r\n atbcMeasurement.discardMeasurement();\r\n }\r\n return response;\r\n } else if (request.nativeAccountId) {\r\n if (this.canUseNative(request, request.nativeAccountId)) {\r\n return this.acquireTokenNative(request, ApiId.acquireTokenByCode, request.nativeAccountId).catch((e: AuthError) => {\r\n // If native token acquisition fails for availability reasons fallback to standard flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n }\r\n throw e;\r\n });\r\n } else {\r\n throw BrowserAuthError.createUnableToAcquireTokenFromNativePlatformError();\r\n }\r\n } else {\r\n throw BrowserAuthError.createAuthCodeOrNativeAccountIdRequiredError();\r\n }\r\n\r\n } catch (e) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, e);\r\n atbcMeasurement.endMeasurement({\r\n errorCode: e instanceof AuthError && e.errorCode || undefined,\r\n subErrorCode: e instanceof AuthError && e.subError || undefined,\r\n success: false\r\n });\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a SilentAuthCodeClient to redeem an authorization code.\r\n * @param request\r\n * @returns Result of the operation to redeem the authorization code\r\n */\r\n private async acquireTokenByCodeAsync(request: AuthorizationCodeRequest): Promise<AuthenticationResult> {\r\n this.logger.trace(\"acquireTokenByCodeAsync called\", request.correlationId);\r\n this.acquireTokenByCodeAsyncMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCodeAsync, request.correlationId);\r\n this.acquireTokenByCodeAsyncMeasurement?.increment({\r\n visibilityChangeCount: 0\r\n });\r\n document.addEventListener(\"visibilitychange\",this.trackPageVisibilityWithMeasurement);\r\n const silentAuthCodeClient = this.createSilentAuthCodeClient(request.correlationId);\r\n const silentTokenResult = await silentAuthCodeClient.acquireToken(request).then((response) => {\r\n this.acquireTokenByCodeAsyncMeasurement?.endMeasurement({\r\n success: true,\r\n fromCache: response.fromCache,\r\n isNativeBroker: response.fromNativeBroker,\r\n requestId: response.requestId\r\n });\r\n return response;\r\n }).catch((tokenRenewalError: AuthError) => {\r\n this.acquireTokenByCodeAsyncMeasurement?.endMeasurement({\r\n errorCode: tokenRenewalError.errorCode,\r\n subErrorCode: tokenRenewalError.subError,\r\n success: false\r\n });\r\n throw tokenRenewalError;\r\n }).finally(() => {\r\n document.removeEventListener(\"visibilitychange\",this.trackPageVisibilityWithMeasurement);\r\n });\r\n return silentTokenResult;\r\n }\r\n\r\n /**\r\n * Attempt to acquire an access token from the cache\r\n * @param silentCacheClient SilentCacheClient\r\n * @param commonRequest CommonSilentFlowRequest\r\n * @param silentRequest SilentRequest\r\n * @returns A promise that, when resolved, returns the access token\r\n */\r\n protected async acquireTokenFromCache(\r\n silentCacheClient: SilentCacheClient,\r\n commonRequest: CommonSilentFlowRequest,\r\n silentRequest: SilentRequest\r\n ): Promise<AuthenticationResult> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenFromCache, commonRequest.correlationId);\r\n switch(silentRequest.cacheLookupPolicy) {\r\n case CacheLookupPolicy.Default:\r\n case CacheLookupPolicy.AccessToken:\r\n case CacheLookupPolicy.AccessTokenAndRefreshToken:\r\n return silentCacheClient.acquireToken(commonRequest);\r\n default:\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n }\r\n\r\n /**\r\n * Attempt to acquire an access token via a refresh token\r\n * @param commonRequest CommonSilentFlowRequest\r\n * @param silentRequest SilentRequest\r\n * @returns A promise that, when resolved, returns the access token\r\n */\r\n protected async acquireTokenByRefreshToken(\r\n commonRequest: CommonSilentFlowRequest,\r\n silentRequest: SilentRequest\r\n ): Promise<AuthenticationResult> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenByRefreshToken, commonRequest.correlationId);\r\n switch(silentRequest.cacheLookupPolicy) {\r\n case CacheLookupPolicy.Default:\r\n case CacheLookupPolicy.AccessTokenAndRefreshToken:\r\n case CacheLookupPolicy.RefreshToken:\r\n case CacheLookupPolicy.RefreshTokenAndNetwork:\r\n const silentRefreshClient = this.createSilentRefreshClient(commonRequest.correlationId);\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentRefreshClientAcquireToken, commonRequest.correlationId);\r\n return silentRefreshClient.acquireToken(commonRequest);\r\n default:\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n }\r\n\r\n /**\r\n * Attempt to acquire an access token via an iframe\r\n * @param request CommonSilentFlowRequest\r\n * @returns A promise that, when resolved, returns the access token\r\n */\r\n protected async acquireTokenBySilentIframe(\r\n request: CommonSilentFlowRequest\r\n ): Promise<AuthenticationResult> {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenBySilentIframe, request.correlationId);\r\n\r\n const silentIframeClient = this.createSilentIframeClient(request.correlationId);\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\r\n return silentIframeClient.acquireToken(request);\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Logout\r\n\r\n /**\r\n * Deprecated logout function. Use logoutRedirect or logoutPopup instead\r\n * @param logoutRequest\r\n * @deprecated\r\n */\r\n async logout(logoutRequest?: EndSessionRequest): Promise<void> {\r\n const correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.logger.warning(\"logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.\", correlationId);\r\n return this.logoutRedirect({\r\n correlationId,\r\n ...logoutRequest\r\n });\r\n }\r\n\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param logoutRequest\r\n */\r\n async logoutRedirect(logoutRequest?: EndSessionRequest): Promise<void> {\r\n const correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n\r\n const redirectClient = this.createRedirectClient(correlationId);\r\n return redirectClient.logout(logoutRequest);\r\n }\r\n\r\n /**\r\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\r\n * @param logoutRequest\r\n */\r\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise<void> {\r\n try {\r\n const correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n const popupClient = this.createPopupClient(correlationId);\r\n return popupClient.logout(logoutRequest);\r\n } catch (e) {\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Account APIs\r\n\r\n /**\r\n * Returns all accounts that MSAL currently has data for.\r\n * (the account object is created at the time of successful login)\r\n * or empty array when no accounts are found\r\n * @returns Array of account objects in cache\r\n */\r\n getAllAccounts(): AccountInfo[] {\r\n this.logger.verbose(\"getAllAccounts called\");\r\n return this.isBrowserEnvironment ? this.browserStorage.getAllAccounts() : [];\r\n }\r\n\r\n /**\r\n * Returns the signed in account matching username.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found.\r\n * This API is provided for convenience but getAccountById should be used for best reliability\r\n * @param username\r\n * @returns The account object stored in MSAL\r\n */\r\n getAccountByUsername(username: string): AccountInfo | null {\r\n this.logger.trace(\"getAccountByUsername called\");\r\n if (!username) {\r\n this.logger.warning(\"getAccountByUsername: No username provided\");\r\n return null;\r\n }\r\n\r\n const account = this.browserStorage.getAccountInfoFilteredBy({username});\r\n if (account) {\r\n this.logger.verbose(\"getAccountByUsername: Account matching username found, returning\");\r\n this.logger.verbosePii(`getAccountByUsername: Returning signed-in accounts matching username: ${username}`);\r\n return account;\r\n } else {\r\n this.logger.verbose(\"getAccountByUsername: No matching account found, returning null\");\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the signed in account matching homeAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param homeAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n getAccountByHomeId(homeAccountId: string): AccountInfo | null {\r\n this.logger.trace(\"getAccountByHomeId called\");\r\n if (!homeAccountId) {\r\n this.logger.warning(\"getAccountByHomeId: No homeAccountId provided\");\r\n return null;\r\n }\r\n\r\n const account = this.browserStorage.getAccountInfoFilteredBy({homeAccountId});\r\n if (account) {\r\n this.logger.verbose(\"getAccountByHomeId: Account matching homeAccountId found, returning\");\r\n this.logger.verbosePii(`getAccountByHomeId: Returning signed-in accounts matching homeAccountId: ${homeAccountId}`);\r\n return account;\r\n } else {\r\n this.logger.verbose(\"getAccountByHomeId: No matching account found, returning null\");\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the signed in account matching localAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param localAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n getAccountByLocalId(localAccountId: string): AccountInfo | null {\r\n this.logger.trace(\"getAccountByLocalId called\");\r\n if (!localAccountId) {\r\n this.logger.warning(\"getAccountByLocalId: No localAccountId provided\");\r\n return null;\r\n }\r\n\r\n const account = this.browserStorage.getAccountInfoFilteredBy({localAccountId});\r\n if (account) {\r\n this.logger.verbose(\"getAccountByLocalId: Account matching localAccountId found, returning\");\r\n this.logger.verbosePii(`getAccountByLocalId: Returning signed-in accounts matching localAccountId: ${localAccountId}`);\r\n return account;\r\n } else {\r\n this.logger.verbose(\"getAccountByLocalId: No matching account found, returning null\");\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account.\r\n * @param account\r\n */\r\n setActiveAccount(account: AccountInfo | null): void {\r\n this.browserStorage.setActiveAccount(account);\r\n }\r\n\r\n /**\r\n * Gets the currently active account\r\n */\r\n getActiveAccount(): AccountInfo | null {\r\n return this.browserStorage.getActiveAccount();\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Helpers\r\n\r\n /**\r\n * Helper to validate app environment before making an auth request\r\n *\r\n * @protected\r\n * @param {InteractionType} interactionType What kind of interaction is being used\r\n * @param {boolean} [setInteractionInProgress=true] Whether to set interaction in progress temp cache flag\r\n */\r\n protected preflightBrowserEnvironmentCheck(interactionType: InteractionType, setInteractionInProgress: boolean = true): void {\r\n this.logger.verbose(\"preflightBrowserEnvironmentCheck started\");\r\n // Block request if not in browser environment\r\n BrowserUtils.blockNonBrowserEnvironment(this.isBrowserEnvironment);\r\n\r\n // Block redirects if in an iframe\r\n BrowserUtils.blockRedirectInIframe(interactionType, this.config.system.allowRedirectInIframe);\r\n\r\n // Block auth requests inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n\r\n // Block redirectUri opened in a popup from calling MSAL APIs\r\n BrowserUtils.blockAcquireTokenInPopups();\r\n\r\n // Block token acquisition before initialize has been called if native brokering is enabled\r\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\r\n\r\n // Block redirects if memory storage is enabled but storeAuthStateInCookie is not\r\n if (interactionType === InteractionType.Redirect &&\r\n this.config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage &&\r\n !this.config.cache.storeAuthStateInCookie) {\r\n throw BrowserConfigurationAuthError.createInMemoryRedirectUnavailableError();\r\n }\r\n\r\n if (interactionType === InteractionType.Redirect || interactionType === InteractionType.Popup) {\r\n this.preflightInteractiveRequest(setInteractionInProgress);\r\n }\r\n }\r\n\r\n /**\r\n * Preflight check for interactive requests\r\n *\r\n * @protected\r\n * @param {boolean} setInteractionInProgress Whether to set interaction in progress temp cache flag\r\n */\r\n protected preflightInteractiveRequest(setInteractionInProgress: boolean): void {\r\n this.logger.verbose(\"preflightInteractiveRequest called, validating app environment\");\r\n // block the reload if it occurred inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n\r\n // Set interaction in progress temporary cache or throw if alread set.\r\n if (setInteractionInProgress) {\r\n this.browserStorage.setInteractionInProgress(true);\r\n }\r\n }\r\n\r\n /**\r\n * Acquire a token from native device (e.g. WAM)\r\n * @param request\r\n */\r\n protected async acquireTokenNative(request: PopupRequest | SilentRequest | SsoSilentRequest, apiId: ApiId, accountId?: string): Promise<AuthenticationResult> {\r\n this.logger.trace(\"acquireTokenNative called\");\r\n if (!this.nativeExtensionProvider) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n\r\n const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, apiId, this.performanceClient, this.nativeExtensionProvider, accountId || this.getNativeAccountId(request), this.nativeInternalStorage, request.correlationId);\r\n\r\n return nativeClient.acquireToken(request);\r\n }\r\n\r\n /**\r\n * Returns boolean indicating if this request can use the native broker\r\n * @param request\r\n */\r\n protected canUseNative(request: RedirectRequest | PopupRequest | SsoSilentRequest, accountId?: string): boolean {\r\n this.logger.trace(\"canUseNative called\");\r\n if (!NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme)) {\r\n this.logger.trace(\"canUseNative: isNativeAvailable returned false, returning false\");\r\n return false;\r\n }\r\n\r\n if (request.prompt) {\r\n switch (request.prompt) {\r\n case PromptValue.NONE:\r\n case PromptValue.CONSENT:\r\n case PromptValue.LOGIN:\r\n this.logger.trace(\"canUseNative: prompt is compatible with native flow\");\r\n break;\r\n default:\r\n this.logger.trace(`canUseNative: prompt = ${request.prompt} is not compatible with native flow, returning false`);\r\n return false;\r\n }\r\n }\r\n\r\n if (!accountId && !this.getNativeAccountId(request)) {\r\n this.logger.trace(\"canUseNative: nativeAccountId is not available, returning false\");\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Get the native accountId from the account\r\n * @param request\r\n * @returns\r\n */\r\n protected getNativeAccountId(request: RedirectRequest | PopupRequest | SsoSilentRequest): string {\r\n const account = request.account || this.browserStorage.getAccountInfoByHints(request.loginHint, request.sid) || this.getActiveAccount();\r\n\r\n return account && account.nativeAccountId || \"\";\r\n }\r\n\r\n /**\r\n * Returns new instance of the Popup Interaction Client\r\n * @param correlationId\r\n */\r\n protected createPopupClient(correlationId?: string): PopupClient {\r\n return new PopupClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\r\n }\r\n\r\n /**\r\n * Returns new instance of the Redirect Interaction Client\r\n * @param correlationId\r\n */\r\n protected createRedirectClient(correlationId?: string): RedirectClient {\r\n return new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\r\n }\r\n\r\n /**\r\n * Returns new instance of the Silent Iframe Interaction Client\r\n * @param correlationId\r\n */\r\n protected createSilentIframeClient(correlationId?: string): SilentIframeClient {\r\n return new SilentIframeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.ssoSilent, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\r\n }\r\n\r\n /**\r\n * Returns new instance of the Silent Cache Interaction Client\r\n */\r\n protected createSilentCacheClient(correlationId?: string): SilentCacheClient {\r\n return new SilentCacheClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n }\r\n\r\n /**\r\n * Returns new instance of the Silent Refresh Interaction Client\r\n */\r\n protected createSilentRefreshClient(correlationId?: string): SilentRefreshClient {\r\n return new SilentRefreshClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n }\r\n\r\n /**\r\n * Returns new instance of the Silent AuthCode Interaction Client\r\n */\r\n protected createSilentAuthCodeClient(correlationId?: string): SilentAuthCodeClient {\r\n return new SilentAuthCodeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenByCode, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n }\r\n\r\n /**\r\n * Adds event callbacks to array\r\n * @param callback\r\n */\r\n addEventCallback(callback: EventCallbackFunction): string | null {\r\n return this.eventHandler.addEventCallback(callback);\r\n }\r\n\r\n /**\r\n * Removes callback with provided id from callback array\r\n * @param callbackId\r\n */\r\n removeEventCallback(callbackId: string): void {\r\n this.eventHandler.removeEventCallback(callbackId);\r\n }\r\n\r\n /**\r\n * Registers a callback to receive performance events.\r\n *\r\n * @param {PerformanceCallbackFunction} callback\r\n * @returns {string}\r\n */\r\n addPerformanceCallback(callback: PerformanceCallbackFunction): string {\r\n return this.performanceClient.addPerformanceCallback(callback);\r\n }\r\n\r\n /**\r\n * Removes a callback registered with addPerformanceCallback.\r\n *\r\n * @param {string} callbackId\r\n * @returns {boolean}\r\n */\r\n removePerformanceCallback(callbackId: string): boolean {\r\n return this.performanceClient.removePerformanceCallback(callbackId);\r\n }\r\n\r\n /**\r\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n enableAccountStorageEvents(): void {\r\n this.eventHandler.enableAccountStorageEvents();\r\n }\r\n\r\n /**\r\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n disableAccountStorageEvents(): void {\r\n this.eventHandler.disableAccountStorageEvents();\r\n }\r\n\r\n /**\r\n * Gets the token cache for the application.\r\n */\r\n getTokenCache(): ITokenCache {\r\n return this.tokenCache;\r\n }\r\n\r\n /**\r\n * Returns the logger instance\r\n */\r\n getLogger(): Logger {\r\n return this.logger;\r\n }\r\n\r\n /**\r\n * Replaces the default logger set in configurations with new Logger with new configurations\r\n * @param logger Logger instance\r\n */\r\n setLogger(logger: Logger): void {\r\n this.logger = logger;\r\n }\r\n\r\n /**\r\n * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc.\r\n * @param sku\r\n * @param version\r\n */\r\n initializeWrapperLibrary(sku: WrapperSKU, version: string): void {\r\n // Validate the SKU passed in is one we expect\r\n this.browserStorage.setWrapperMetadata(sku, version);\r\n }\r\n\r\n /**\r\n * Sets navigation client\r\n * @param navigationClient\r\n */\r\n setNavigationClient(navigationClient: INavigationClient): void {\r\n this.navigationClient = navigationClient;\r\n }\r\n\r\n /**\r\n * Returns the configuration object\r\n */\r\n getConfiguration(): BrowserConfiguration {\r\n return this.config;\r\n }\r\n\r\n /**\r\n * Generates a correlation id for a request if none is provided.\r\n *\r\n * @protected\r\n * @param {?Partial<BaseAuthRequest>} [request]\r\n * @returns {string}\r\n */\r\n protected getRequestCorrelationId(request?: Partial<BaseAuthRequest>): string {\r\n if (request?.correlationId) {\r\n return request.correlationId;\r\n }\r\n\r\n if (this.isBrowserEnvironment) {\r\n return this.browserCrypto.createNewGuid();\r\n }\r\n\r\n /*\r\n * Included for fallback for non-browser environments,\r\n * and to ensure this method always returns a string.\r\n */\r\n return Constants.EMPTY_STRING;\r\n }\r\n\r\n // #endregion\r\n}\r\n","export default (function (value) {\n return Array.isArray(value);\n});","export default (function (value) {\n return typeof value === 'string';\n});","export default (function (array) {\n return array[array.length - 1];\n});","import camelCase from 'to-camel-case';\nvar namespacer = '/';\nexport default (function (type) {\n return type.indexOf(namespacer) === -1 ? camelCase(type) : type.split(namespacer).map(camelCase).join(namespacer);\n});","export default (function (array, callback) {\n return array.reduce(function (partialObject, element) {\n return callback(partialObject, element);\n }, {});\n});","import isPlainObject from './isPlainObject';\nimport flattenWhenNode from './flattenWhenNode';\nexport default flattenWhenNode(isPlainObject);","export default (function (value) {\n return value.length === 0;\n});","import { DEFAULT_NAMESPACE } from '../constants';\nimport isEmpty from './isEmpty';\nimport camelCase from './camelCase';\nexport default function unflattenActionCreators(flatActionCreators, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$namespace = _ref.namespace,\n namespace = _ref$namespace === void 0 ? DEFAULT_NAMESPACE : _ref$namespace,\n prefix = _ref.prefix;\n\n function unflatten(flatActionType, partialNestedActionCreators, partialFlatActionTypePath) {\n var nextNamespace = camelCase(partialFlatActionTypePath.shift());\n\n if (isEmpty(partialFlatActionTypePath)) {\n partialNestedActionCreators[nextNamespace] = flatActionCreators[flatActionType];\n } else {\n if (!partialNestedActionCreators[nextNamespace]) {\n partialNestedActionCreators[nextNamespace] = {};\n }\n\n unflatten(flatActionType, partialNestedActionCreators[nextNamespace], partialFlatActionTypePath);\n }\n }\n\n var nestedActionCreators = {};\n Object.getOwnPropertyNames(flatActionCreators).forEach(function (type) {\n var unprefixedType = prefix ? type.replace(\"\" + prefix + namespace, '') : type;\n return unflatten(type, nestedActionCreators, unprefixedType.split(namespace));\n });\n return nestedActionCreators;\n}","export default (function (value) {\n return value === null;\n});","import invariant from 'invariant';\nimport isFunction from './utils/isFunction';\nimport identity from './utils/identity';\nimport isNull from './utils/isNull';\nexport default function createAction(type, payloadCreator, metaCreator) {\n if (payloadCreator === void 0) {\n payloadCreator = identity;\n }\n\n invariant(isFunction(payloadCreator) || isNull(payloadCreator), 'Expected payloadCreator to be a function, undefined or null');\n var finalPayloadCreator = isNull(payloadCreator) || payloadCreator === identity ? identity : function (head) {\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 head instanceof Error ? head : payloadCreator.apply(void 0, [head].concat(args));\n };\n var hasMeta = isFunction(metaCreator);\n var typeString = type.toString();\n\n var actionCreator = function actionCreator() {\n var payload = finalPayloadCreator.apply(void 0, arguments);\n var action = {\n type: type\n };\n\n if (payload instanceof Error) {\n action.error = true;\n }\n\n if (payload !== undefined) {\n action.payload = payload;\n }\n\n if (hasMeta) {\n action.meta = metaCreator.apply(void 0, arguments);\n }\n\n return action;\n };\n\n actionCreator.toString = function () {\n return typeString;\n };\n\n return actionCreator;\n}","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport invariant from 'invariant';\nimport isPlainObject from './utils/isPlainObject';\nimport isFunction from './utils/isFunction';\nimport identity from './utils/identity';\nimport isArray from './utils/isArray';\nimport isString from './utils/isString';\nimport isNil from './utils/isNil';\nimport getLastElement from './utils/getLastElement';\nimport camelCase from './utils/camelCase';\nimport arrayToObject from './utils/arrayToObject';\nimport flattenActionMap from './utils/flattenActionMap';\nimport unflattenActionCreators from './utils/unflattenActionCreators';\nimport createAction from './createAction';\nimport { DEFAULT_NAMESPACE } from './constants';\nexport default function createActions(actionMap) {\n for (var _len = arguments.length, identityActions = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n identityActions[_key - 1] = arguments[_key];\n }\n\n var options = isPlainObject(getLastElement(identityActions)) ? identityActions.pop() : {};\n invariant(identityActions.every(isString) && (isString(actionMap) || isPlainObject(actionMap)), 'Expected optional object followed by string action types');\n\n if (isString(actionMap)) {\n return actionCreatorsFromIdentityActions([actionMap].concat(identityActions), options);\n }\n\n return _objectSpread({}, actionCreatorsFromActionMap(actionMap, options), actionCreatorsFromIdentityActions(identityActions, options));\n}\n\nfunction actionCreatorsFromActionMap(actionMap, options) {\n var flatActionMap = flattenActionMap(actionMap, options);\n var flatActionCreators = actionMapToActionCreators(flatActionMap);\n return unflattenActionCreators(flatActionCreators, options);\n}\n\nfunction actionMapToActionCreators(actionMap, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n prefix = _ref.prefix,\n _ref$namespace = _ref.namespace,\n namespace = _ref$namespace === void 0 ? DEFAULT_NAMESPACE : _ref$namespace;\n\n function isValidActionMapValue(actionMapValue) {\n if (isFunction(actionMapValue) || isNil(actionMapValue)) {\n return true;\n }\n\n if (isArray(actionMapValue)) {\n var _actionMapValue$ = actionMapValue[0],\n payload = _actionMapValue$ === void 0 ? identity : _actionMapValue$,\n meta = actionMapValue[1];\n return isFunction(payload) && isFunction(meta);\n }\n\n return false;\n }\n\n return arrayToObject(Object.keys(actionMap), function (partialActionCreators, type) {\n var _objectSpread2;\n\n var actionMapValue = actionMap[type];\n invariant(isValidActionMapValue(actionMapValue), 'Expected function, undefined, null, or array with payload and meta ' + (\"functions for \" + type));\n var prefixedType = prefix ? \"\" + prefix + namespace + type : type;\n var actionCreator = isArray(actionMapValue) ? createAction.apply(void 0, [prefixedType].concat(actionMapValue)) : createAction(prefixedType, actionMapValue);\n return _objectSpread({}, partialActionCreators, (_objectSpread2 = {}, _objectSpread2[type] = actionCreator, _objectSpread2));\n });\n}\n\nfunction actionCreatorsFromIdentityActions(identityActions, options) {\n var actionMap = arrayToObject(identityActions, function (partialActionMap, type) {\n var _objectSpread3;\n\n return _objectSpread({}, partialActionMap, (_objectSpread3 = {}, _objectSpread3[type] = identity, _objectSpread3));\n });\n var actionCreators = actionMapToActionCreators(actionMap, options);\n return arrayToObject(Object.keys(actionCreators), function (partialActionCreators, type) {\n var _objectSpread4;\n\n return _objectSpread({}, partialActionCreators, (_objectSpread4 = {}, _objectSpread4[camelCase(type)] = actionCreators[type], _objectSpread4));\n });\n}","export default (function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var initialState = typeof args[args.length - 1] !== 'function' && args.pop();\n var reducers = args;\n\n if (typeof initialState === 'undefined') {\n throw new TypeError('The initial state may not be undefined. If you do not want to set a value for this reducer, you can use null instead of undefined.');\n }\n\n return function (prevState, value) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n var prevStateIsUndefined = typeof prevState === 'undefined';\n var valueIsUndefined = typeof value === 'undefined';\n\n if (prevStateIsUndefined && valueIsUndefined && initialState) {\n return initialState;\n }\n\n return reducers.reduce(function (newState, reducer) {\n return reducer.apply(undefined, [newState, value].concat(args));\n }, prevStateIsUndefined && !valueIsUndefined && initialState ? initialState : prevState);\n };\n});","import isPlainObject from './isPlainObject';\nimport isMap from './isMap';\nimport hasGeneratorInterface from './hasGeneratorInterface';\nimport flattenWhenNode from './flattenWhenNode';\nexport default flattenWhenNode(function (node) {\n return (isPlainObject(node) || isMap(node)) && !hasGeneratorInterface(node);\n});","import ownKeys from './ownKeys';\nexport default function hasGeneratorInterface(handler) {\n var keys = ownKeys(handler);\n var hasOnlyInterfaceNames = keys.every(function (ownKey) {\n return ownKey === 'next' || ownKey === 'throw';\n });\n return keys.length && keys.length <= 2 && hasOnlyInterfaceNames;\n}","export default (function (value) {\n return value === undefined;\n});","export default (function (value) {\n return value.toString();\n});","import reduceReducers from 'reduce-reducers';\nimport invariant from 'invariant';\nimport isPlainObject from './utils/isPlainObject';\nimport isMap from './utils/isMap';\nimport ownKeys from './utils/ownKeys';\nimport flattenReducerMap from './utils/flattenReducerMap';\nimport handleAction from './handleAction';\nimport get from './utils/get';\nexport default function handleActions(handlers, defaultState, options) {\n if (options === void 0) {\n options = {};\n }\n\n invariant(isPlainObject(handlers) || isMap(handlers), 'Expected handlers to be a plain object.');\n var flattenedReducerMap = flattenReducerMap(handlers, options);\n var reducers = ownKeys(flattenedReducerMap).map(function (type) {\n return handleAction(type, get(type, flattenedReducerMap), defaultState);\n });\n var reducer = reduceReducers.apply(void 0, reducers.concat([defaultState]));\n return function (state, action) {\n if (state === void 0) {\n state = defaultState;\n }\n\n return reducer(state, action);\n };\n}","import invariant from 'invariant';\nimport isFunction from './utils/isFunction';\nimport isPlainObject from './utils/isPlainObject';\nimport identity from './utils/identity';\nimport isNil from './utils/isNil';\nimport isUndefined from './utils/isUndefined';\nimport toString from './utils/toString';\nimport { ACTION_TYPE_DELIMITER } from './constants';\nexport default function handleAction(type, reducer, defaultState) {\n if (reducer === void 0) {\n reducer = identity;\n }\n\n var types = toString(type).split(ACTION_TYPE_DELIMITER);\n invariant(!isUndefined(defaultState), \"defaultState for reducer handling \" + types.join(', ') + \" should be defined\");\n invariant(isFunction(reducer) || isPlainObject(reducer), 'Expected reducer to be a function or object with next and throw reducers');\n\n var _ref = isFunction(reducer) ? [reducer, reducer] : [reducer.next, reducer.throw].map(function (aReducer) {\n return isNil(aReducer) ? identity : aReducer;\n }),\n nextReducer = _ref[0],\n throwReducer = _ref[1];\n\n return function (state, action) {\n if (state === void 0) {\n state = defaultState;\n }\n\n var actionType = action.type;\n\n if (!actionType || types.indexOf(toString(actionType)) === -1) {\n return state;\n }\n\n return (action.error === true ? throwReducer : nextReducer)(state, action);\n };\n}","import lookup from 'void-elements'\nconst attrRE = /\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g\n\nexport default function stringify(tag) {\n const res = {\n type: 'tag',\n name: '',\n voidElement: false,\n attrs: {},\n children: [],\n }\n\n const tagMatch = tag.match(/<\\/?([^\\s]+?)[/\\s>]/)\n if (tagMatch) {\n res.name = tagMatch[1]\n if (\n lookup[tagMatch[1]] ||\n tag.charAt(tag.length - 2) === '/'\n ) {\n res.voidElement = true\n }\n\n // handle comment tag\n if (res.name.startsWith('!--')) {\n const endIndex = tag.indexOf('-->')\n return {\n type: 'comment',\n comment: endIndex !== -1 ? tag.slice(4, endIndex) : '',\n }\n }\n }\n\n const reg = new RegExp(attrRE)\n let result = null\n for (;;) {\n result = reg.exec(tag)\n\n if (result === null) {\n break\n }\n\n if (!result[0].trim()) {\n continue\n }\n\n if (result[1]) {\n const attr = result[1].trim()\n let arr = [attr, '']\n\n if (attr.indexOf('=') > -1) {\n arr = attr.split('=')\n }\n\n res.attrs[arr[0]] = arr[1]\n reg.lastIndex--\n } else if (result[2]) {\n res.attrs[result[2]] = result[3].trim().substring(1, result[3].length - 1)\n }\n }\n\n return res\n}\n","import parseTag from './parse-tag'\n\nconst tagRE = /<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g\nconst whitespaceRE = /^\\s*$/\n\n// re-used obj for quick lookups of components\nconst empty = Object.create(null)\n\nexport default function parse(html, options) {\n options || (options = {})\n options.components || (options.components = empty)\n const result = []\n const arr = []\n let current\n let level = -1\n let inComponent = false\n\n // handle text at top level\n if (html.indexOf('<') !== 0) {\n var end = html.indexOf('<')\n result.push({\n type: 'text',\n content: end === -1 ? html : html.substring(0, end),\n })\n }\n\n html.replace(tagRE, function (tag, index) {\n if (inComponent) {\n if (tag !== '</' + current.name + '>') {\n return\n } else {\n inComponent = false\n }\n }\n const isOpen = tag.charAt(1) !== '/'\n const isComment = tag.startsWith('<!--')\n const start = index + tag.length\n const nextChar = html.charAt(start)\n let parent\n\n if (isComment) {\n const comment = parseTag(tag)\n\n // if we're at root, push new base node\n if (level < 0) {\n result.push(comment)\n return result\n }\n parent = arr[level]\n parent.children.push(comment)\n return result\n }\n\n if (isOpen) {\n level++\n\n current = parseTag(tag)\n if (current.type === 'tag' && options.components[current.name]) {\n current.type = 'component'\n inComponent = true\n }\n\n if (\n !current.voidElement &&\n !inComponent &&\n nextChar &&\n nextChar !== '<'\n ) {\n current.children.push({\n type: 'text',\n content: html.slice(start, html.indexOf('<', start)),\n })\n }\n\n // if we're at root, push new base node\n if (level === 0) {\n result.push(current)\n }\n\n parent = arr[level - 1]\n\n if (parent) {\n parent.children.push(current)\n }\n\n arr[level] = current\n }\n\n if (!isOpen || current.voidElement) {\n if (\n level > -1 &&\n (current.voidElement || current.name === tag.slice(2, -1))\n ) {\n level--\n // move current up a level to match the end tag\n current = level === -1 ? result : arr[level]\n }\n if (!inComponent && nextChar !== '<' && nextChar) {\n // trailing text node\n // if we're at the root, push a base text node. otherwise add as\n // a child to the current node.\n parent = level === -1 ? result : arr[level].children\n\n // calculate correct end of the content slice in case there's\n // no tag after the text node.\n const end = html.indexOf('<', start)\n let content = html.slice(start, end === -1 ? undefined : end)\n // if a node is nothing but whitespace, collapse it as the spec states:\n // https://www.w3.org/TR/html4/struct/text.html#h-9.1\n if (whitespaceRE.test(content)) {\n content = ' '\n }\n // don't add whitespace-only text nodes if they would be trailing text nodes\n // or if they would be leading whitespace-only text nodes:\n // * end > -1 indicates this is not a trailing text node\n // * leading node is when level is -1 and parent has length 0\n if ((end > -1 && level + parent.length >= 0) || content !== ' ') {\n parent.push({\n type: 'text',\n content: content,\n })\n }\n }\n }\n })\n\n return result\n}\n","function attrString(attrs) {\n const buff = []\n for (let key in attrs) {\n buff.push(key + '=\"' + attrs[key] + '\"')\n }\n if (!buff.length) {\n return ''\n }\n return ' ' + buff.join(' ')\n}\n\nfunction stringify(buff, doc) {\n switch (doc.type) {\n case 'text':\n return buff + doc.content\n case 'tag':\n buff +=\n '<' +\n doc.name +\n (doc.attrs ? attrString(doc.attrs) : '') +\n (doc.voidElement ? '/>' : '>')\n if (doc.voidElement) {\n return buff\n }\n return buff + doc.children.reduce(stringify, '') + '</' + doc.name + '>'\n case 'comment':\n buff += '<!--' + doc.comment + '-->'\n return buff\n }\n}\n\nexport default function (doc) {\n return doc.reduce(function (token, rootEl) {\n return token + stringify('', rootEl)\n }, '')\n}\n","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _excluded = [\"format\"],\n _excluded2 = [\"children\", \"count\", \"parent\", \"i18nKey\", \"context\", \"tOptions\", \"values\", \"defaults\", \"components\", \"ns\", \"i18n\", \"t\", \"shouldUnescape\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { useContext, isValidElement, cloneElement, createElement } from 'react';\nimport HTML from 'html-parse-stringify';\nimport { getI18n, I18nContext, getDefaults } from './context';\nimport { warn, warnOnce } from './utils';\n\nfunction hasChildren(node, checkLength) {\n if (!node) return false;\n var base = node.props ? node.props.children : node.children;\n if (checkLength) return base.length > 0;\n return !!base;\n}\n\nfunction getChildren(node) {\n if (!node) return [];\n return node.props ? node.props.children : node.children;\n}\n\nfunction hasValidReactChildren(children) {\n if (Object.prototype.toString.call(children) !== '[object Array]') return false;\n return children.every(function (child) {\n return isValidElement(child);\n });\n}\n\nfunction getAsArray(data) {\n return Array.isArray(data) ? data : [data];\n}\n\nfunction mergeProps(source, target) {\n var newTarget = _objectSpread({}, target);\n\n newTarget.props = Object.assign(source.props, target.props);\n return newTarget;\n}\n\nexport function nodesToString(children, i18nOptions) {\n if (!children) return '';\n var stringNode = '';\n var childrenArray = getAsArray(children);\n var keepArray = i18nOptions.transSupportBasicHtmlNodes && i18nOptions.transKeepBasicHtmlNodesFor ? i18nOptions.transKeepBasicHtmlNodesFor : [];\n childrenArray.forEach(function (child, childIndex) {\n if (typeof child === 'string') {\n stringNode += \"\".concat(child);\n } else if (isValidElement(child)) {\n var childPropsCount = Object.keys(child.props).length;\n var shouldKeepChild = keepArray.indexOf(child.type) > -1;\n var childChildren = child.props.children;\n\n if (!childChildren && shouldKeepChild && childPropsCount === 0) {\n stringNode += \"<\".concat(child.type, \"/>\");\n } else if (!childChildren && (!shouldKeepChild || childPropsCount !== 0)) {\n stringNode += \"<\".concat(childIndex, \"></\").concat(childIndex, \">\");\n } else if (child.props.i18nIsDynamicList) {\n stringNode += \"<\".concat(childIndex, \"></\").concat(childIndex, \">\");\n } else if (shouldKeepChild && childPropsCount === 1 && typeof childChildren === 'string') {\n stringNode += \"<\".concat(child.type, \">\").concat(childChildren, \"</\").concat(child.type, \">\");\n } else {\n var content = nodesToString(childChildren, i18nOptions);\n stringNode += \"<\".concat(childIndex, \">\").concat(content, \"</\").concat(childIndex, \">\");\n }\n } else if (child === null) {\n warn(\"Trans: the passed in value is invalid - seems you passed in a null child.\");\n } else if (_typeof(child) === 'object') {\n var format = child.format,\n clone = _objectWithoutProperties(child, _excluded);\n\n var keys = Object.keys(clone);\n\n if (keys.length === 1) {\n var value = format ? \"\".concat(keys[0], \", \").concat(format) : keys[0];\n stringNode += \"{{\".concat(value, \"}}\");\n } else {\n warn(\"react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.\", child);\n }\n } else {\n warn(\"Trans: the passed in value is invalid - seems you passed in a variable like {number} - please pass in variables for interpolation as full objects like {{number}}.\", child);\n }\n });\n return stringNode;\n}\n\nfunction renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) {\n if (targetString === '') return [];\n var keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];\n var emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.join('|')).test(targetString);\n if (!children && !emptyChildrenButNeedsHandling) return [targetString];\n var data = {};\n\n function getData(childs) {\n var childrenArray = getAsArray(childs);\n childrenArray.forEach(function (child) {\n if (typeof child === 'string') return;\n if (hasChildren(child)) getData(getChildren(child));else if (_typeof(child) === 'object' && !isValidElement(child)) Object.assign(data, child);\n });\n }\n\n getData(children);\n var ast = HTML.parse(\"<0>\".concat(targetString, \"</0>\"));\n\n var opts = _objectSpread(_objectSpread({}, data), combinedTOpts);\n\n function renderInner(child, node, rootReactNode) {\n var childs = getChildren(child);\n var mappedChildren = mapAST(childs, node.children, rootReactNode);\n return hasValidReactChildren(childs) && mappedChildren.length === 0 ? childs : mappedChildren;\n }\n\n function pushTranslatedJSX(child, inner, mem, i, isVoid) {\n if (child.dummy) child.children = inner;\n mem.push(cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, {\n key: i\n }), isVoid ? undefined : inner));\n }\n\n function mapAST(reactNode, astNode, rootReactNode) {\n var reactNodes = getAsArray(reactNode);\n var astNodes = getAsArray(astNode);\n return astNodes.reduce(function (mem, node, i) {\n var translationContent = node.children && node.children[0] && node.children[0].content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language);\n\n if (node.type === 'tag') {\n var tmp = reactNodes[parseInt(node.name, 10)];\n if (!tmp && rootReactNode.length === 1 && rootReactNode[0][node.name]) tmp = rootReactNode[0][node.name];\n if (!tmp) tmp = {};\n var child = Object.keys(node.attrs).length !== 0 ? mergeProps({\n props: node.attrs\n }, tmp) : tmp;\n var isElement = isValidElement(child);\n var isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;\n var isEmptyTransWithHTML = emptyChildrenButNeedsHandling && _typeof(child) === 'object' && child.dummy && !isElement;\n var isKnownComponent = _typeof(children) === 'object' && children !== null && Object.hasOwnProperty.call(children, node.name);\n\n if (typeof child === 'string') {\n var value = i18n.services.interpolator.interpolate(child, opts, i18n.language);\n mem.push(value);\n } else if (hasChildren(child) || isValidTranslationWithChildren) {\n var inner = renderInner(child, node, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i);\n } else if (isEmptyTransWithHTML) {\n var _inner = mapAST(reactNodes, node.children, rootReactNode);\n\n mem.push(cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, {\n key: i\n }), _inner));\n } else if (Number.isNaN(parseFloat(node.name))) {\n if (isKnownComponent) {\n var _inner2 = renderInner(child, node, rootReactNode);\n\n pushTranslatedJSX(child, _inner2, mem, i, node.voidElement);\n } else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {\n if (node.voidElement) {\n mem.push(createElement(node.name, {\n key: \"\".concat(node.name, \"-\").concat(i)\n }));\n } else {\n var _inner3 = mapAST(reactNodes, node.children, rootReactNode);\n\n mem.push(createElement(node.name, {\n key: \"\".concat(node.name, \"-\").concat(i)\n }, _inner3));\n }\n } else if (node.voidElement) {\n mem.push(\"<\".concat(node.name, \" />\"));\n } else {\n var _inner4 = mapAST(reactNodes, node.children, rootReactNode);\n\n mem.push(\"<\".concat(node.name, \">\").concat(_inner4, \"</\").concat(node.name, \">\"));\n }\n } else if (_typeof(child) === 'object' && !isElement) {\n var content = node.children[0] ? translationContent : null;\n if (content) mem.push(content);\n } else if (node.children.length === 1 && translationContent) {\n mem.push(cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, {\n key: i\n }), translationContent));\n } else {\n mem.push(cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, {\n key: i\n })));\n }\n } else if (node.type === 'text') {\n var wrapTextNodes = i18nOptions.transWrapTextNodes;\n\n var _content = shouldUnescape ? i18nOptions.unescape(i18n.services.interpolator.interpolate(node.content, opts, i18n.language)) : i18n.services.interpolator.interpolate(node.content, opts, i18n.language);\n\n if (wrapTextNodes) {\n mem.push(createElement(wrapTextNodes, {\n key: \"\".concat(node.name, \"-\").concat(i)\n }, _content));\n } else {\n mem.push(_content);\n }\n }\n\n return mem;\n }, []);\n }\n\n var result = mapAST([{\n dummy: true,\n children: children || []\n }], ast, getAsArray(children || []));\n return getChildren(result[0]);\n}\n\nexport function Trans(_ref) {\n var children = _ref.children,\n count = _ref.count,\n parent = _ref.parent,\n i18nKey = _ref.i18nKey,\n context = _ref.context,\n _ref$tOptions = _ref.tOptions,\n tOptions = _ref$tOptions === void 0 ? {} : _ref$tOptions,\n values = _ref.values,\n defaults = _ref.defaults,\n components = _ref.components,\n ns = _ref.ns,\n i18nFromProps = _ref.i18n,\n tFromProps = _ref.t,\n shouldUnescape = _ref.shouldUnescape,\n additionalProps = _objectWithoutProperties(_ref, _excluded2);\n\n var _ref2 = useContext(I18nContext) || {},\n i18nFromContext = _ref2.i18n,\n defaultNSFromContext = _ref2.defaultNS;\n\n var i18n = i18nFromProps || i18nFromContext || getI18n();\n\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using i18nextReactModule');\n return children;\n }\n\n var t = tFromProps || i18n.t.bind(i18n) || function (k) {\n return k;\n };\n\n if (context) tOptions.context = context;\n\n var reactI18nextOptions = _objectSpread(_objectSpread({}, getDefaults()), i18n.options && i18n.options.react);\n\n var namespaces = ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n var defaultValue = defaults || nodesToString(children, reactI18nextOptions) || reactI18nextOptions.transEmptyNodeValue || i18nKey;\n var hashTransKey = reactI18nextOptions.hashTransKey;\n var key = i18nKey || (hashTransKey ? hashTransKey(defaultValue) : defaultValue);\n var interpolationOverride = values ? tOptions.interpolation : {\n interpolation: _objectSpread(_objectSpread({}, tOptions.interpolation), {}, {\n prefix: '#$?',\n suffix: '?$#'\n })\n };\n\n var combinedTOpts = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, tOptions), {}, {\n count: count\n }, values), interpolationOverride), {}, {\n defaultValue: defaultValue,\n ns: namespaces\n });\n\n var translation = key ? t(key, combinedTOpts) : defaultValue;\n var content = renderNodes(components || children, translation, i18n, reactI18nextOptions, combinedTOpts, shouldUnescape);\n var useAsParent = parent !== undefined ? parent : reactI18nextOptions.defaultTransParent;\n return useAsParent ? createElement(useAsParent, additionalProps, content) : content;\n}"],"sourceRoot":""}